Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Установить выделение в пустую ноду в webkit (https://javascript.ru/forum/events/11312-ustanovit-vydelenie-v-pustuyu-nodu-v-webkit.html)

dio 17.08.2010 16:43

Установить выделение в пустую ноду в webkit
 
Дело происходит в iframe с contenteditable

Выделение схлопнуто. Задача - вставить некоторую ноду и поместить курсор в нее. Нода пустая. Код примерный, чтоб не вдаваться в особенности реализации:

var n = doc.createElement('div')
n.appendChild(doc.createTextNode(''))

var s = win.getSelection();
var r = s.getRangeAt(0);
r.insertNode(n)
r.selectNodeContents(n)
r.collapse(false)
s.removeAllRanges()
s.addRange(r)


Прекрасно работает в ff и opera, в webkit браузерах выставляет выделение перед новой нодой
Можно ли как-нибудь уговорить сафари/хром ставить выделение куда нужно мне, а не им?
Как временное решение придумал - для вебкита поместить в текстовую ноду символ \uFEFF

Octane 17.08.2010 19:03

Попробуйте setStart на текстовый узел.

dio 17.08.2010 19:49

Увы и setStart+setEnd и selectNodeContents дают один результат - никакой
Еще пробовал вставлять текстовую ноду с текстом, выделять, схлопывать выделение и устанавливать nodeValue='' - все также :( Вот уж не ожидал от вебкита такой подлянки

Octane 17.08.2010 21:26

Да в WebKit всегда WYSIWYG-режим был глючным.

dio 19.08.2010 02:45

Нашел более безобидный костыль - вставлять текстовую ноду с контентом "\n"
PS Не так уж безобидно - если курсор внутри слова - появляется пробел. Безнадежно :(


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