Как проверить, подключены ли какие-либо прослушиватели / обработчики событий JavaScript к элементу / документу?

Попытка поиска в Интернете, но не похоже, что я могу правильно сформулировать поисковый запрос.

Как бы просто это ни звучало, как я могу с помощью jquery или просто javascript перечислить все обработчики или прослушиватели событий, которые присоединены к элементу (ам)/ документу / окну или присутствуют в dom.

Просто интересуюсь.

Заранее спасибо.

4 ответа

Решение

В jQuery до 1.8 попробуйте использовать $("#element").data("events")

РЕДАКТИРОВАТЬ:

Также есть расширение jQuery: listHandlers

При отладке, если вы хотите просто посмотреть, есть ли событие, я рекомендую использовать Visual Event или раздел "Элементы" в Инструментах разработчика Chrome: выберите элемент и найдите "Прослушиватели событий" в правом нижнем углу.

В вашем коде, если вы используете jQuery до версии 1.8, вы можете использовать:

$(selector).data("events")

чтобы получить события. Начиная с версии 1.8, это больше не поддерживается (см. Эту заявку об ошибке). Ты можешь использовать:

$._data(element, "events")

но это не рекомендуется, так как это внутренняя структура jQuery, и она может измениться в будущих выпусках.

На этот вопрос есть несколько ответов, которые могут быть полезны, но ни один из них не настолько элегантен, как $(selector).data("events") было.

Без jQuery:

если слушатели были добавлены с использованием метода elem.addEventListener(), перечислить этих слушателей нелегко. Вы можете переопределить метод EventTarget.addEventListener(), обернув его своим собственным. Тогда у вас будет информация, какие слушатели были зарегистрированы.

var f = EventTarget.prototype.addEventListener; // store original
EventTarget.prototype.addEventListener = function(type, fn, capture) {
  this.f = f;
  this.f(type, fn, capture); // call original method
  alert('Added Event Listener: on' + type);
}

Рабочий пример вы можете найти по адресу http://jsfiddle.net/tomas1000r/RDW7F/

Я только что обнаружил визуальное событие 2:

http://www.sprymedia.co.uk/article/Visual+Event+2

перейдите в раздел "сделай сам" и перетащите текстовую ссылку на панель инструментов закладки, перейдите на страницу с событиями и нажмите на закладку

протестировано в FF Mac

Другие вопросы по тегам