Следственный эксперимент> 1. self - текущий фрейм = window. События отслеживаются на уровне окна.
А... Ну, Кто Ж Знал. Я Бы Тогда Не Стал Советовать currentTarget.
> 2. Я прекрасно понимаю, что можно вообще каждому элементу назначить обработчик, однако, ИМХО, нафига тогда вообще иерархия объектов? Представляется естественным установить источник события по ID и его обрабатывать.
Нет, Не Естественно. Обработчик События Естественно Ставить Тому Элементу, Для Которого Событие Имеет Смысл. Если Же Ставить Обработчик В Корень Иерархии И Разбирать События От Элемента, Его Вызвавшего, То Ты Будешь Делать Лишнюю Работу По Путешествию По Дереву, Которую За Тебя И Так Уже Делает Браузер. Сейчас Поясню...
> 4. Bсем спасибо, ситуация исправляется простым обращением к parentNod.
В Этой Ситуации - Да. Это Работает, Когда Ты Хочешь Приспособиться К Конкретному Багу Конкретной Версии Конкретного Браузера В Конкретном Случае: <TD>Text...
В Другом Браузере, Или В Более Новой Мозилле Или В Случае, Когда У Тебя <TD><Form><FieldSet>Text.... parentNode Даст Тебе Совсем Не То, Что Ты Хотел. То, Что Ты Хочешь - Это Идти Вверх По Дереву, До Тех Пор, Пока Не Встретится Какой-Нибудь Из Элементов, Который Может Событие Обработать. Вот Это Я И Имел В Виду, Когда Говорил О Выполнении Работы За Браузер.
На Самом Деле, Надо Действительно Ставить Обработчики На Все Элементы, Которые Нужно. И Это Не Трудно. Есть getElementsByTagName, Есть Другие Способы Выборки На Странице Нужных Элементов. В Любом Случае - Это Всего Лишь Один-Два Цикла, Назначающие Обработчики. Зато, Это Будет Работать Во Всех Случаях.
P.S. Прошу Простить Мне Невольную Нотацию... Но, Если Цель - Получить В Форуме Ответ, Желательно Давать Побольше Информации О Задаче. Особенно, Если Она Выполняется Не Совсем Обычными Методами :-) |