Вероятно, стоит упомянуть, что Firebug 1.12 представил getEventListeners(target)
. Вики-страница Firebug для этого здесь , и есть очень полезная запись в блоге об этом здесь .
(Firebug 1.12 был выпущен только в августе 2013 года, поэтому ответ на этот вопрос был правильным, когда он был первоначально опубликован.)
Однако есть несколько предостережений для getEventListeners
:
Во-первых, он не будет работать, если вы передадите ему объект jQuery; передайте ему обычный объект DOM. (Возможно, это очевидно, но это застало меня врасплох!)
Во-вторых, я обнаружил, что getEventListeners
не всегда работает, если я запускаю его до загрузки всего кода на странице. Я не уверен точно, когда это работает и не работает, но я наверняка видел такую ситуацию:
>>> getEventListeners(document.getElementById('elementid'))
ReferenceError: getEventListeners is not defined
>>> $._data(document.getElementById('elementid'), "events");
Object { click=[1]}
Как вы можете видеть, метод "longhand" (из сообщения SO, на которое ссылается ответ) может получить событие, но getEventListeners
отображается как не определенный. Эта ошибка отличается от возвращаемого значения, которое вы получаете, если getEventListeners
запускается, но сообщает, что у объекта нет прослушивателей, поэтому я бы сказал, что вы можете использовать getEventListeners
без страха, поскольку это будет очевидно, если он еще не доступен!