我仍然无法相信这是不可能的,但是否有一种方法可以循环遍历dom并查看所有使用'addEventListener'绑定的事件处理程序。 这篇文章和许多其他文章都说不行。
如果是这样,那么像Chrome的检查器或Firebug这样的应用程序如何显示它们,因为它们确实可以?我猜他们可能以某种方式增强了dom的方法,以便能够跟踪被绑定的内容。
我仍然无法相信这是不可能的,但是否有一种方法可以循环遍历dom并查看所有使用'addEventListener'绑定的事件处理程序。 这篇文章和许多其他文章都说不行。
如果是这样,那么像Chrome的检查器或Firebug这样的应用程序如何显示它们,因为它们确实可以?我猜他们可能以某种方式增强了dom的方法,以便能够跟踪被绑定的内容。
getEventListeners(document);
如果需要的话,您可以递归迭代所有dom节点,并找到所有附加的事件处理程序。
getEventListeners
是 Chrome 开发者工具控制台提供的方法,我正在寻找一种可以在运行时查找绑定到 DOM 的事件的方法。目前,我只找到了 jQuery 方法 $.data(element, 'events')
。我正在寻找一种纯 JavaScript 或 DOM 的方法。 - Lin Du在 Chrome v53 控制台中,我尝试了:
getEventListeners(document);
返回:
__proto__: Object
以及子元素,这不是我要找的。
所以我尝试了:
getEventListeners(window);
返回
Object {beforeunload: Array[1], load: Array[1]}
这就是我正在寻找的东西。因此,我认为正确的方法是:
getEventListeners(myDomElement):
其中,myDomElement 是使用像 getElementById 等标准方式获取的目标对象。
getEventListeners(node_name);
其中node_name
可以是元素名称或其ID。