これに対する解決策を見つけようとして、しばらくの間オンラインで検索してきました。私がしたいのは、テキスト選択の開始点と終了点を同等の html 選択値に変換することです。
例:
HTML: test text **some <span style="color:red">te**st t</span>ext
TEXT: test text **some te**st text
ユーザーが上記の ** で囲まれた部分を選択したとします。テキスト選択の位置を取得するのに問題はありません: start: 10, end: 17.しかし、取得したいのは、html 要素を含む選択の位置です: start: 10, end: 41
誰でもこれに対する解決策を提案できますか?
編集: 要求に応じて、選択したテキストの開始点と終了点を取得する既存のコードを添付しました。取得したいのは、選択した HTML の開始点と終了点です。
var start = 0, end = 0;
var sel, range, priorRange;
if (typeof window.getSelection != "undefined") {
range = window.getSelection().getRangeAt(0);
priorRange = range.cloneRange();
priorRange.selectNodeContents(el[ 0 ]);
priorRange.setEnd(range.startContainer, range.startOffset);
start = priorRange.toString().length;
end = start + range.toString().length;
} else if (typeof document.selection != "undefined" &&
(sel = document.selection).type != "Control") {
range = sel.createRange();
priorRange = document.body.createTextRange();
priorRange.moveToElementText(el[ 0 ]);
priorRange.setEndPoint("EndToStart", range);
start = priorRange.text.length;
end = start + range.text.length;
}