contenteditable div があり、IE 以外のブラウザーで次のコードを使用して、この div 内のキャレット位置を取得しようとしています。
var caretPosition = 0, containerEl = null, sel, range;
if (window.getSelection)
{
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPosition = range.endOffset;
}
}
}
1行のテキストのキャレット位置を正しく返しますが、複数行のテキストがあり、新しい行ごとに各行のキャレット位置が0から始まるようです。私の問題は、前の行で見つかった文字数。たとえば、2 行目では
caretPosition = 1 行目の文字数 + 2 行目のキャレットの前の文字数。
2 行目のキャレットの前の文字数だけを返します。どうすればこの動作を達成できますか? または、上記の行にあるテキストを含む別の範囲を取得するにはどうすればよいですか?
どんなアドバイスでも大歓迎です、ありがとう!