Ответ 1
Короткий ответ заключается в том, что невозможно достоверно определить всех слушателей на элементе, просто используя javascript.
Долгий ответ заключается в том, что нет стандартного механизма для перечисления всех подключенных слушателей. Некоторые библиотеки хранят список слушателей, которые были прикреплены с помощью библиотеки, но не обязательно знают о других слушателях. Слушатели, добавленные в разметку или как свойства элемента, можно найти, тестируя связанные свойства и атрибуты элемента (несколько утомительное тестирование для onclick, onchange, onblur и т.д. Для каждого элемента). Но невозможно найти слушателя, добавленного с помощью addEventListener или attachEvent, если ссылка не была где-то сохранена и она была доступна (см. Комментарий о библиотеках).
Кроме того, есть "делегированные" слушатели, которые придают вид привязки к элементу, когда на самом деле они привязаны к родительскому элементу.