Возможный дубликат: Получить позицию курсора в div contentEditable
У меня есть contenteditable div, и я пытаюсь получить позицию курсора внутри этого div в браузерах, отличных от IE, используя следующий код:
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;
}
}
}
Он правильно возвращает позицию каретки для текста в одной строке, но у меня есть несколько строк текста, и кажется, что для каждой новой строки позиция каретки для каждой строки начинается с 0. Моя проблема в том, что мне нужно, чтобы позиция каретки включала количество символов, найденных в предыдущих строках, например, для второй строки
CaretPosition = количество символов в первой строке + количество символов перед кареткой во второй строке.
Он возвращает только количество символов перед кареткой во второй строке. Как я могу добиться такого поведения? Или как я могу иметь другой диапазон, включающий текст, найденный в строках выше?
Любые советы очень ценятся, спасибо!
range
понятия не имеет, что функция contentEditable даже существует - диапазон всегда знает только о узлы DOM, которые он охватывает. - person Aaron Digulla   schedule 31.01.2013