2014-10-03 2 views
0

Интересно, как я могу получить список прослушивателей событий для какого-либо события?Как просмотреть список слушателей событий

Предположим, я добавить слушателя событий в окно с этим кодом:

window.addEventListener('click', 
    function() { 
     console.log(111); 
     // a lot of code ... 
    }, false) 

Но если я собираюсь увидеть эти слушателей window.onclick она возвращает нуль. Однако, когда я нажимаю на окно, этот обработчик событий срабатывает. Могу ли я увидеть этот список другими способами?

+0

не то, что вы ищете точно, но в Google Chrome, когда вы выбираете элемент, на правой стороне окна разработчиков есть вкладка с этим шоу все мероприятия, что этот элемент подписался на. И поскольку события пузырятся, я не уверен, что то, что вы просите, является релевантным. Было бы интересно, чтобы кто-то точно сказал. – Leron

ответ

0
    1. elem.onclick собственности и elem.addEventListener('click') не зависят друг от друга, но порядок креплени слушателей действительно имеет значение

<body> 
 
    <span> body stuff </span> 
 
    <script> 
 
    var element = document.body 
 
    element.addEventListener('click', function(){ console.log(1) }) 
 
    element.onclick = function(){ console.log(2) } 
 
    element.addEventListener('click', function(){ console.log(3) }) 
 
    </script> 
 
</body>

сделать кнопку на корпусе и получите «1 2 3»

затем установите element.onclick = null

сделать нажмите на тело и получить '1 3'

  • 2,1. свойство onclick (которое может быть назначено только одному слушателю, которое является функцией, а не массивом) доступно из сценария для каждого элемента (как и любое другое свойство)

  • 2.2. Определенно нет возможности увидеть слушателей событий, добавленных с помощью сценария addEventListener, однако встроенный отладчик браузера будет показывать свое состояние на любой точке останова (или в любой момент).

    В Chrome 32+:

    F12 -> Выберите 'Элементы' (Tab) -> Выбрать <body> элемент -> На правой выбор '' EventListeners

    В других браузерах вы можете нуждаются в расширении (Dragonfly, Firebug и т. д.)

  • 2.3. Отладчик Chrome покажет все eventListeners (отсортированные по имени события) для текущего элемента и его родителей до document. Но я не знаю, можно ли увидеть прослушиватели оконных событий.

    1. Если вы используете jQuery, есть способ получить от скрипта кучу слушателей, добавленных только jQuery, хотя это совсем другая история.
Смежные вопросы