如何查看事件监听器列表

时间:2014-10-03 09:43:09

标签: javascript javascript-events

我想知道如何才能获得某些事件的事件监听器列表?

假设我使用以下代码将事件监听器添加到窗口:

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

但是如果我要用window.onclick看到这些监听器,它将返回null。 但是,当我点击窗口时,此事件处理程序将触发。我能用另一种方式看到这个清单吗?

1 个答案:

答案 0 :(得分: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>
&#13;
&#13;
&#13;

点击身体并获得&#39; 1 2 3&#39;

然后设置element.onclick = null

点击身体并获得&#39; 1 3&#39;

  • 2.1。可以从脚本中为每个元素提供属性onclick(只能分配给一个函数的侦听器,而不是数组)

  • 2.2。定义上没有办法从脚本中看到添加了addEventListener的事件监听器,但浏览器集成调试器将在任何断点(或任何给定时刻)显示其状态。

    在Chrome 32 +中:

    F12 - &gt;挑选元素&#39; (标签) - &gt;选择<body>元素 - &gt;在正确的选择&#39; EventListeners&#39;

    在其他浏览器中,您可能需要扩展程序(Dragonfly,Firebug等)

  • 2.3。 Chrome调试器将显示当前元素及其父级的所有eventListeners(按事件名称排序),直至document。但我不知道是否可以看到窗口事件监听器。

    1. 如果你使用jQuery,有一种方法可以从脚本中获得一些只由jQuery添加的监听器,尽管它是一个不同的故事。