如何使用 JavaScript 在 DOM 节点上查找事件侦听器
How to find event listeners on a DOM node using JavaScript
我仍然无法相信这是不可能的,但是有没有办法循环访问dom并使用"addEventListener"查看所有附加的事件处理程序。这篇文章和许多其他帖子都说不。
如果是这种情况,那么像Chrome的检查器或Firebug这样的应用程序如何显示它们,它们确实如此?我想他们可能会以某种方式增强 dom 的方法,以便他们可以跟踪绑定的内容。
Chrome 的控制台有一个方法可以帮助您检查 dom 节点是否注册了任何事件侦听器;例如,使用以下命令检查附加到文档节点的事件侦听器:
https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject
getEventListeners(document);
如果需要,您可以递归遍历所有 dom 节点并找到附加的所有事件处理程序。
当然,浏览器内部有一个事件侦听器列表,但它不会暴露给页面级 JavaScript。例如,Firebug(或Eventbug)可能使用nsIEventListenerInfo。
话虽如此,这个古老的答案仍然成立:
如何在 DOM 节点上查找事件侦听器?
使用以下函数获取已注册事件的 json;
getEventListeners(node_name);
其中node_name
可以是元素名称或其 ID。
在Chrome v53控制台上,我尝试过:
getEventListeners(document);
返回:
__proto__: Object
和子元素,而不是我要找的。
所以我试过:
getEventListeners(window);
返回
Object {beforeunload: Array[1], load: Array[1]}
这就是我正在寻找的。所以我认为正确的方法是:
getEventListeners(myDomElement):
其中myDomElement是使用标准方式(如getElementById等)获得的目标对象...
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 在JQuery事件中查找父元素
- 查找将 onclick 事件分配给节点的代码
- 如何将查找事件发送到嵌入了 SWFObject 2.2 的播放器
- 允许在自定义事件上“查找使用实例”的 IDE
- 如何查找触发或处理事件的 Javascript
- 如何查找特定事件上已执行的函数名称
- 用于查找基于时间的事件的最佳Javascript算法
- 如何查找jquery或javascript事件从哪个文件发生
- 如何查找已添加自定义事件侦听器的位置
- 如何从许多其他输入中查找触发键关闭事件的特定输入框
- 使用 Jquery 查找冒泡事件中的挂起事件或最后一个事件
- 如何使用 JavaScript 在 DOM 节点上查找事件侦听器
- 如何查找容器内的所有事件并委派它们
- 基于子事件查找父元素
- Ruby客户端Eventbrite API使用Javascript查找事件ID
- MVC - PartialView不能在View中查找事件
- 浏览器中是否有搜索/查找事件
- 查找事件的位置(鼠标悬停在按钮上),用于Firefox扩展