編集可能な div 内のカーソルの位置を取得するために使用するこのコードがあります。
function getMeCurPos(element){
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
caretOffset = preCaretRange.toString().length;
return caretOffset;
}
}
問題は、返される caretOffset がテキスト コンテンツのみをカウントし、html タグをカウントしないことです。例:
私の編集可能な div でこの文字列を考えてみましょう:
Hey <b>jony</b>, whats goin on in the | party
※カーソルは|
文字で表します。
getMeCurPos(ele) を実行すると :30
が返されますが、返されるはず37
です。b
タグは数えません