Тема: RegExp + Selection
Показать сообщение отдельно
  #9 (permalink)  
Старый 15.06.2010, 21:14
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В цикле двигайте границы выделения, пока в него не попадут точки или оно не выйдет за пределы блока.

Для IE:
var range = document.selection.createRange(), text = range.text;
while (пока нет точки в начале text, и range в пределах нужного блока) {
   range.moveStart("character", -1);
   text = range.text;
   …
}
while (пока нет точки в конце text, и range в пределах нужного блока) {
   range.moveEnd("character", 1);
   text = range.text;
   …
}
Проверять нахождение в пределах блока можно поднимаясь вверх по дереву от range.parentElement().

Для остальных браузеров схема другая:
1. Получите все текстовые узлы (nodeType = 3) внутри блока, поместив их в массив.
2. Найдите в получившемся массиве элемент range.startContainer.
3. В цикле от элемента range.startContainer - 1 до начала массива складывайте nodeValue и ищите последнюю точку.
4. Для range.endContainer тоже самое в противоположном направлении.

Почитать здесь: http://fastcoder.org/articles/?aid=609

Последний раз редактировалось Octane, 15.06.2010 в 21:20.
Ответить с цитированием