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

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

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

Просто интересно.

Спасибо заранее.

Ответ 1

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

EDIT:

Существует также расширение jQuery: listHandlers

Ответ 2

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

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

$(selector).data("events")

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

$._data(element, "events")

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

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

Ответ 3

Без 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/

Ответ 4

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

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

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

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