Логин:

Пароль:

Форумы
Общие вопросы
Document Object Model
Обсуждаем конференцию
Web Usability (test)

Общие вопросы

Следственный эксперимент

>> <script>
>> function setHE (){
>> self.onmouseover=over;
>> }
>
> Супер... Вот И Ошибка. Это Что Должно Означать? К Чему Привязано Событие? Честно Говоря, Что Такое self, Я Не Знаю. Но, Если Это Аналог this, То Фокус Не Пройдет: Функция Написана В Контексте window, И this Здесь Не Означает Никакого Элемента.
> Вот И DOM Тоже Не Понимает, К Чему Это Привязано, Поэтому Везде currentTarget - undefined.
>
> Повторюсь.
> 1. currentTarget - Это Тот _Элемент_, Которому Назначен Обработчик События.
> 2. target - Это Тот Элемент, Который Событие Вызвал.
>
> Пример:
>
> <Table><TR><TD Id=Cell Style="Padding:1em;">Some Text, <Em>Some Text</Em> </Table>
> <Script Type="text/javascript">
> function MouseOver(e){
> document.getElementById('Result').firstChild.nodeValue='Target: '+e.target.nodeName+'\ncurrentTarget: '+e.currentTarget.nodeName;
> }//MouseOver
>
> /* Назначать Событие Желательно Чему-Нибудь Определенному: */
> document.getElementById('Cell').onmouseover=MouseOver;
> </Script>
>
> <Div Id=Result>
> ...
> </Div>
>
> Как Видно, currentTarget - Это Всегда TD, Которой Назначен Обработчик.
>
> Еще Одно Замечание Касаемо Теперь Уже Target. Вообще Говоря, Текстовый Node Внутри Элемента <TD> Не Должен Менять Target, Потому Что Он - Не Элемент. Эту Ошибку В Мозилле Недавно Исправили (Кажется, Этот Фикс Успел Попасть В Финальную Версию 1.3). Поэтому Я Включил В Пример Внутрь TD Еще И Элемент <Em>, Чтобы Показать, Как На Нем Меняется Target. Но, В Любом Случае, currentTarget ВСЕГДА Показывает На Элемент, К Которому Привязано Событие.

1. self - текущий фрейм = window. События отслеживаются на уровне окна.
И прекрасно ДОМ все понимает, поскольку событие всплывает до уровня окна.
2. Я прекрасно понимаю, что можно вообще каждому элементу назначить обработчик, однако, ИМХО, нафига тогда вообще иерархия объектов? Представляется естественным установить источник события по ID и его обрабатывать.
3. У меня Мозилла 1.2.1. Текстовый нод не меняет target, он просто не передает событие вверх.
4. Bсем спасибо, ситуация исправляется простым обращением к parentNod.
СообщениеАвторДата
azbook12.03.2003 14:48
azbook15.03.2003 14:30
Maniac12.03.2003 16:12
azbook12.03.2003 21:06
Maniac12.03.2003 22:53
azbook14.03.2003 23:20
Maniac15.03.2003 02:24
azbook15.03.2003 14:29
Maniac15.03.2003 16:30
azbook15.03.2003 19:49
Maniac15.03.2003 23:28
azbook16.03.2003 10:28
Maniac16.03.2003 16:41
azbook16.03.2003 20:23
Maniac17.03.2003 10:53
Leechy12.03.2003 22:44
azbook15.03.2003 00:13
Leechy16.03.2003 20:17
azbook17.03.2003 09:32