Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Автоподстветка слов в designmode (https://javascript.ru/forum/dom-window/19338-avtopodstvetka-slov-v-designmode.html)

Curious 02.08.2011 11:55

Автоподстветка слов в designmode
 
Требуется реализовать следующую задачу:

Пользователь в iframe designmode набирает сообщение, при наборе определенных слов они подсвечиваются.

Я это делаю следующим образом: обрабатываю все нажатия клавиш в iframe. При нажатии пробела, я пробегаюсь по тексту регуляркой и обрамляю нужные слова тегом.

Обрамление работает хорошо, но курсор скачет в начало текста.

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

da_ff 02.08.2011 13:27

Место курсора помечайте новым узлом (маркером), после прохода по тексту возвращайте курсор к маркеру и удаляйте его.

розовый слоник 02.08.2011 16:18

ммм а нельзя просто посчитать длину строки?

da_ff 02.08.2011 16:28

розовый слоник,
В designmode курсор позиционируется спомощью манипуляций с узлами (выделяем узел, схлопываем выделение), пробемно оценить какой узел находится на n-расстоянии от начала. С маркером гораздо проще.

Curious 02.08.2011 16:58

da_ff, спасибо.

а не получится ли ситуация, что после удаления маркера позиция опять обнулится?

Curious 02.08.2011 17:10

<текст><выделенное слово><узел с пробелом(маркер)>

И есть проблема в хроме (скорее всего и в других браузерах будет): при добавлении узла с пробелом , он не добавляется и курсор перебрасывается в узел с выделенным словом


Часовой пояс GMT +3, время: 04:57.