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


Автор: V0fka 3.6.2013, 22:14
Привет!

Есть элемент
Код

<div class='class_name' id='id_element'>О себе</div>

Где-то программно ему назначается обработчик события onclick. В html коде элемент выглядит как показано выше, т.е. не видно какая функция вызывается. Подскажите, пожалуйста, как отследить какая функция срабатывает и в каком месте она вешается на onclick. smile 

Автор: CruorVult 4.6.2013, 13:28
В спецификации W3C написано что можно добавить listener в "список events list", но что собой представляет этот список и как к нему достучаться - скрыто. 

Тем не менее в хроме в инспекторе есть метод getEventListeners(element), где можно посмотреть, какой обработчик повешен на элемент.

Автор: V0fka 4.6.2013, 20:10
CruorVult, спасибо!

Автор: V0fka 5.6.2013, 20:01
Возникла сложность. Хочу сделать как сделно тут: http://www.nl.ua/ru/stroimaterialy. Там в строке над товарами есть флажок Акции. Как узнать какая js функция вызывается при событии change этого флажка?

Автор: Arantir 5.6.2013, 20:09
В Chrome это Ctrl+J и вкладка Elements -> Event Listeners.

Автор: V0fka 5.6.2013, 20:33
Arantir, спасибо! Но событие флажка всеравно поймать не могу. 

Автор: Arantir 5.6.2013, 21:04
Судя по всему, там ивент не напрямую на елемент повешен. Используемый там фреймворк ловит ивенты самого окна (любой клик и т.п. по умолчанию так же вызывается для всех родителей вплоть до document), а уже потом вызывает ивент для соответствующего елемента.
Получается, что строчки кода, предназначенные для клика по флажку, вовсе не в ивенте и вызываются косвенно впоследствии вызова внутренних функций js-фреймворка.
Мда, это один из тех подходов, которые улучшают удобство разработки, но ухудшают удобство тестирования (как ООП, например)...


Придется копать исходники и искать концы, где на этот элемент что-то повешено. По его id, например.

Автор: V0fka 5.6.2013, 22:03
Arantir, как печально :( .


CruorVult, Arantir, ещё раз спасибо за ответы!

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