Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript在DOM节点上查找事件侦听器_Javascript - Fatal编程技术网

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

如何使用JavaScript在DOM节点上查找事件侦听器,javascript,Javascript,我仍然不能相信这是不可能的,但是有没有一种方法可以通过dom循环并查看使用“addEventListener”附加的所有事件处理程序。还有很多人说不 如果是这样的话,那么像Chrome的inspector或Firebug这样的应用程序是如何显示它们的呢?我想他们可能会以某种方式扩展dom的方法,以便跟踪绑定的内容 当然,浏览器内部有一个事件侦听器列表,但它不暴露于页面级JavaScript。例如,Firebug(或)可能使用 尽管如此,这个古老的答案仍然适用: Chrome控制台有一种方法可以帮

我仍然不能相信这是不可能的,但是有没有一种方法可以通过dom循环并查看使用“addEventListener”附加的所有事件处理程序。还有很多人说不


如果是这样的话,那么像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(节点名称)
where
node\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);