Я уже смотрел на эти вопросы:
- Как найти прослушиватели событий на узле DOM при отладке или из кода JavaScript?
- Могу ли я программно исследовать и изменять обработчики событий Javascript в элементах html?
- Как отлаживать привязки событий JavaScript / jQuery с помощью Firebug (или аналогичного инструмента)
однако ни один из них не отвечает, как получить список прослушивателей событий, прикрепленных к узлу, используя addEventListener
без изменения addEventListener
прототипа до создания прослушивателей событий.
VisualEvent не отображает всех прослушивателей событий (только для iphone), и я хочу сделать это (отчасти) программно.
javascript
dom-events
Tyilo
источник
источник
Ответы:
Chrome DevTools, Safari Inspector и Firebug поддерживают getEventListeners (узел) .
источник
Вы не можете.
Единственный способ получить список всех прослушивателей событий, прикрепленных к узлу, - это перехватить вызов присоединения слушателя.
DOM4 addEventListener
Говорит
Это означает, что слушатель событий добавляется в «список слушателей событий». Вот и все. Нет никакого представления о том, каким должен быть этот список и как к нему обращаться.
источник
Поскольку для этого нет собственного способа, вот менее навязчивое решение, которое я нашел (не добавляйте никаких «старых» методов прототипа):
источник
Вы можете получить все события jQuery, используя $ ._ data ($ ('[selector]') [0], 'events'); измените [селектор] на то, что вам нужно.
Существует плагин, который собирает все события, прикрепленные jQuery, под названием eventsReport.
Также я пишу свой собственный плагин, который делает это с лучшим форматированием.
Но в любом случае, похоже, мы не можем собрать события, добавленные методом addEventListener. Возможно, мы можем обернуть вызов addEventListener для хранения событий, добавленных после нашего вызова обертывания.
Кажется, лучший способ увидеть события, добавленные к элементу, с помощью инструментов разработчика.
Но вы не увидите там делегированных событий. Итак, нам нужен jQuery eventsReport.
ОБНОВЛЕНИЕ: ТЕПЕРЬ мы МОЖЕМ видеть события, добавленные методом addEventListener. СМОТРИТЕ ВЕРНЫЙ ОТВЕТ НА ЭТОТ ВОПРОС.
источник
Я не могу найти способ сделать это с помощью кода, но в стандартном Firefox 64 события перечислены рядом с каждым HTML-объектом в Инспекторе инструментов разработчика, как указано на странице MDN Examine Event Listeners и как показано на этом изображении:
источник