如何使用JavaScript在DOM节点上查找事件侦听器

scr*_*key 17 javascript

我仍然无法相信这是不可能的,但是有一种方法可以循环访问dom并查看使用'addEventListener'附加的所有事件处理程序.这篇文章和许多其他人说没有.

如果是这种情况,那么Chrome的检查员或Firebug等应用程序如何显示它们,他们会这样做?我猜他们可能会以某种方式增加dom的方法,以便他们可以跟踪绑定的内容.

Emi*_* A. 30

Chrome控制台有一个方法可以帮助您检查dom节点是否注册了任何事件侦听器,例如检查附加到文档节点的事件侦听器使用:

https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject

getEventListeners(document);
Run Code Online (Sandbox Code Playgroud)

您可以递归遍历所有dom节点,并根据需要查找所有事件处理程序.

  • getEventListeners(myDomElement)在Chromium v​​.25开发人员工具控制台中工作,但在实际代码中它会引发错误. (2认同)

use*_*621 6

当然浏览器内部有一个事件监听器列表,但它没有暴露给页面级JavaScript.例如,Firebug(或Eventbug)可能使用nsIEventListenerInfo.

话虽这么说,这个旧答案仍然成立:
如何在DOM节点上找到事件监听器?