Contenteditable позиция каретки div

Возможный дубликат: Получить позицию курсора в 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 = количество символов в первой строке + количество символов перед кареткой во второй строке.

Он возвращает только количество символов перед кареткой во второй строке. Как я могу добиться такого поведения? Или как я могу иметь другой диапазон, включающий текст, найденный в строках выше?

Любые советы очень ценятся, спасибо!


person Crista23    schedule 28.01.2013    source источник
comment
Так как это не будет повторно открыто :-(: Вы должны сделать этот расчет самостоятельно, перебирая все предыдущие братья и сестры текущего узла DOM. Это потому, что range понятия не имеет, что функция contentEditable даже существует - диапазон всегда знает только о узлы DOM, которые он охватывает.   -  person Aaron Digulla    schedule 31.01.2013
comment
Благодарим за ваше предложение. Надеюсь, я нашел здесь еще один пост на SO, который, похоже, решил мою проблему: stackoverflow.com/questions/4811822/   -  person Crista23    schedule 31.01.2013