有没有办法找到哪些事件处理程序连接到给定的DOM节点?哪些事件处理程序附加到DOM节点 - 如何查找?
例如,当您单击“添加注释”链接时,会附加一个事件处理程序,其中显示注释表单。现在,如果我有一个DOM文档(一个网页),并且想列出一个特定节点的所有事件处理程序,是否有办法做到这一点?
(我怀疑这是不可能的JS在页面内运行;做浏览器扩展在FF可以访问这些数据?)
有没有办法找到哪些事件处理程序连接到给定的DOM节点?哪些事件处理程序附加到DOM节点 - 如何查找?
例如,当您单击“添加注释”链接时,会附加一个事件处理程序,其中显示注释表单。现在,如果我有一个DOM文档(一个网页),并且想列出一个特定节点的所有事件处理程序,是否有办法做到这一点?
(我怀疑这是不可能的JS在页面内运行;做浏览器扩展在FF可以访问这些数据?)
铬(我怀疑Safari浏览器)可显示附加事件监听器,当你选择元素,然后向下滚动右边栏到事件监听器部分。在那里,你可以看到附加的功能。
我目前没有Firebug的副本,但我怀疑DOM标签在Firefox中也显示类似的信息。
确实有,谢谢(在Chrome中,FBug 1.6没有它)。 – Piskvor 2010-11-30 14:13:48
在Chrome中:
这将告诉你什么事件处理程序附加到该元素。
(Krof的答案可能已经更清楚地写。)
在Chrome中,你可以使用getEventListeners
。
getEventListeners($0)
应该返回一个将事件名称映射到其处理程序的对象。请注意,$0
是一个special dev tools variable,它始终指向“元素”选项卡中选定的最后一个元素。
看看这个问题:http://stackoverflow.com/questions/446892/how-to-find-event-listeners-on-a-dom-node – McStretch 2010-11-30 13:25:10
@McStretch:有用,谢谢。没有发现之前,投票结束这个重复。 – Piskvor 2010-11-30 13:42:38