| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Отследить вызов обработчика |
| Автор: V0fka 3.6.2013, 22:14 | ||
| Привет! Есть элемент
Где-то программно ему назначается обработчик события onclick. В html коде элемент выглядит как показано выше, т.е. не видно какая функция вызывается. Подскажите, пожалуйста, как отследить какая функция срабатывает и в каком месте она вешается на onclick. |
| Автор: 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, ещё раз спасибо за ответы! |