Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > определить на каком элементе курсор, designMode=on


Автор: BuTbKa_ua 12.10.2007, 18:40
Всем доброго времени суток. Назрел очередной вопрос.
Нужно определить на каком HTML элементе находить курсор в IFRAME с designMode='on'
Проблема получения элемента возникла в FF. Вот код:
Код

var Cursor = function(container) {
    this.container = container;
    this.win = container.ownerDocument.defaultView;
    var selection = this.win.getSelection();
    var range = selection.getRangeAt(0);
    var end = range.endContainer;
    if (end.nodeType == 3){
        var node = end;
        node = node.parentNode;
        this.currNode = node; 
    }
}


В конструктор приходит ссылка на <BODY> элемент в окне IFRAME
end - node на котором находится курсор, в 99,9% случаев это textNode (nodeType=3)
мне нужно узнать к какому HTML элементу относится этот textNode, я пытаюсь получить parentNode этого textNode, но иногда получаю undefined, например если в IFRAME такой код:
Код

<span class="anotherText">T</span><br />

и курсор находится на букве T (nodeValue=T)
когда код уже 
Код

<span class="anotherText">TE</span><br />

(nodeValue=TE), тогда я получаю нужный мне SPAN элемент.


Это DOM спецификация? или есть другие способы получить нужный элемент?
Спасибо за внимание.


Автор: cruelangel 12.10.2007, 20:18
видимо потому, что в первом случае end.nodeType != 3

Автор: BuTbKa_ua 12.10.2007, 23:32
да нет. Там nodeType=3
Я чуть ошибся не undefined выдает, а возвращает BODY или HTML

Автор: cruelangel 13.10.2007, 10:49
а, ну тогда всё просто - в первом случае в некоторых браузерах курсор ставится перед <br>, но после </span>, соответственно контейнером является элемент содержащий их обоих

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)