如何使用JavaScript在DOM节点上查找事件侦听器
我仍然不能相信这是不可能的,但是有没有一种方法可以通过dom循环并查看使用“addEventListener”附加的所有事件处理程序。还有很多人说不如何使用JavaScript在DOM节点上查找事件侦听器,javascript,Javascript,我仍然不能相信这是不可能的,但是有没有一种方法可以通过dom循环并查看使用“addEventListener”附加的所有事件处理程序。还有很多人说不 如果是这样的话,那么像Chrome的inspector或Firebug这样的应用程序是如何显示它们的呢?我想他们可能会以某种方式扩展dom的方法,以便跟踪绑定的内容 当然,浏览器内部有一个事件侦听器列表,但它不暴露于页面级JavaScript。例如,Firebug(或)可能使用 尽管如此,这个古老的答案仍然适用: Chrome控制台有一种方法可以帮
如果是这样的话,那么像Chrome的inspector或Firebug这样的应用程序是如何显示它们的呢?我想他们可能会以某种方式扩展dom的方法,以便跟踪绑定的内容 当然,浏览器内部有一个事件侦听器列表,但它不暴露于页面级JavaScript。例如,Firebug(或)可能使用 尽管如此,这个古老的答案仍然适用:
Chrome控制台有一种方法可以帮助您检查dom节点是否注册了任何事件侦听器,例如,要检查附加到文档节点的事件侦听器,请使用:
您可以递归地迭代所有dom节点,并在需要时找到所有附加的事件处理程序。在Chrome v53控制台上,我尝试过: getEventListeners(文档)强> 这将返回: 原型:对象 和子元素,不是我要找的 所以我试过: getEventListeners(窗口)强> 返回 对象{beforeunload:Array[1],load:Array[1]} 这就是我要找的。 因此,我认为正确的方法是: getEventListeners(MyDoElement):
其中,MyDomeElement是通过getElementById等标准方式获取的目标对象。使用以下函数获取已注册事件的json
getEventListeners(节点名称)
wherenode\u name
可以是元素名称或其id。在哪里可以看到Chrome或Firebug显示事件侦听器?是的,我也想知道在哪里可以看到它们!我已经下载了Firebug的插件,显示了它们,但你可能是对的,当它们在chrome web inspector中绑定时,它们会以某种方式跟踪任何事件侦听器,单击顶部的“元素”选项卡。它是左边最远的一个。在dom中选择一个元素,然后在右侧有一个关于所选元素的信息列表,如样式、属性等。列表中的最后一个是事件侦听器,它为您提供了所需的所有信息。但是您只能看到每个选定元素的信息,而不能看到整个DOM。请允许我问一个问题:)getEventListeners(MyDoElement)在Chromium v.25开发者工具控制台中工作,但在实际代码中它会抛出错误。@Robinlikethebird是的,getEventListeners
是chrome开发者工具控制台提供的一种方法,我正在寻找一种可以在运行时查找绑定到dom的事件的方法。现在,我只找到jquery方法$.data(元素,'events')
。我正在寻找一种简单的javascript或DOM方式。“正确的方式是知更鸟式的方式”这是什么意思?@Neutrino ops。。。很抱歉,我在这里粘贴的剪贴板中有一些错误,甚至没有意识到。我已经改正了这个短语。谢谢你的通知。
getEventListeners(document);