Тема: DOM - вопрос
Показать сообщение отдельно
  #6 (permalink)  
Старый 25.09.2013, 00:13
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Придется вручную считать.

Сначала взять range:
if( selection.rangeCount ) {
   var range = selection.getRangeAt(0);
   ...
}


потом выяснить, является ли range.commonAncestorContainer твоим спаном или его потомком (если нет, то выделение выскочило за границы спана).

ну и далее разбираться со свойствами range (startContainer, endContainer, startOffset, endOffset). а именно, посчитать суммарную длину текста всех текстовых узлов до startContainer, добавить туда же все <br> (их считаем как один символ), то же самое между startContainer и endContainer и т.д.
может оказаться, что startContainer и/или endContainer окажутся спаном, тогда оффсеты соответствуют позиции чилда.

короче, тут много всяких деталей.

Тут все расписано. Если тебе ещё и для IE надо делать, то вообще "везунчик"
Ответить с цитированием