检查任何 DOM 元素的附加事件处理程序

IT技术 javascript events
2021-02-05 19:47:54

有什么方法可以查看 DOM 元素的任何事件附加了哪些函数/代码?使用 Firebug 或任何其他工具。

6个回答

自 2011 年中期 Chrome 发布和自 2010 年以来 Chrome 开发者频道发布以来,Google Chrome 开发者工具中Elements Panel就已拥有此功能。

此外,为选定节点显示的事件侦听器按它们在捕获和冒泡阶段被触发的顺序排列

命中command+ option+i在Mac OSX和Ctrl+ Shift+i在Windows上的Chrome火这件事

开发工具截图

是否可以检查window对象上的message事件,例如事件?
2021-03-16 19:47:54
Chrome 中的元素面板是如何做到这一点的?
2021-03-22 19:47:54
我发现这种方法相当混乱......至少对我来说。当我打开事件时,它只有 jQuery 事件,我针对该特定元素的自定义事件没有显示。我将 $._data 用于我用 jQuery 附加的自定义事件。参见stackoverflow.com/questions/2008592/...
2021-04-02 19:47:54
另外,我们如何找到分配这些的代码?一旦我发现使用此 UI 的可疑事件处理程序,栏的宽度不足以让我看到处理程序的代码...
2021-04-08 19:47:54

使用传统element.onclick= handler或 HTML附加的事件处理程序<element onclick="handler">可以element.onclick从脚本或调试器中属性中轻松检索

使用 DOM Level 2 EventsaddEventListener方法和 IE附加的事件处理程序attachEvent目前根本无法从脚本中检索。DOM Level 3 曾提议element.eventListenerList获取所有侦听器,但尚不清楚这是否会使其成为最终规范。目前在任何浏览器中都没有实现。

作为浏览器扩展的调试工具可以访问这些类型的侦听器,但我不知道实际上有什么。

一些 JS 框架留下了足够的事件绑定记录来计算它们一直在做什么。Visual Event采用这种方法来发现通过一些流行框架注册的侦听器。

Firebug 现在有一个名为 EventBug 的扩展,据报道在 chrome/safari 中也有类似的功能。我还将链接到一个更受欢迎的讨论:stackoverflow.com/questions/446892/...
2021-03-17 19:47:54
2021-04-03 19:47:54
在 Opera 中,您可以为此使用内置的 Opera Dragonfly。
2021-04-05 19:47:54
EventBug 从版本 2 开始集成到 FireBug 中(现在有一个“事件”选项卡)。
2021-04-07 19:47:54
此外,还有一个内置于选择HTML标记时的Firebug(Firefox的扩展)。
2021-04-10 19:47:54

Chrome Dev Tools最近发布了一些用于监控 JavaScript 事件的新工具

TL; 博士

使用 收听某种类型的事件monitorEvents()

使用unmonitorEvents()停止监听。

使用 获取 DOM 元素的侦听器getEventListeners()

使用 Event Listeners Inspector 面板获取有关事件侦听器的信息。

查找自定义事件

根据我的需要,在 3rd 方代码中发现自定义 JS 事件,以下两个版本getEventListeners()非常有用;

  • getEventListeners(window)
  • getEventListeners(document)

如果您知道事件侦听器附加到哪个 DOM 节点,您将传递它而不是windowor document

已知事件

如果您知道要监视的事件,例如click在文档正文中,您可以使用以下内容:monitorEvents(document.body, 'click');.

您现在应该开始看到document.body控制台中记录的所有点击事件

我试过 thisgetEventListeners(document.getElementById("inputId")); 但它返回无效,数组大小为 1
2021-03-28 19:47:54

您可以通过查看 DOM 来查看直接附加的事件(element.onclick = handler)。您可以在 Firefox 中使用 FireBug 和 FireQuery 查看附加的 jQuery 事件。似乎没有任何方法可以使用 FireBug 查看 addEventListener 添加的事件。但是,您可以使用 Chrome 调试器在 Chrome 中查看它们。

您可以使用Allan Jardine 的Visual Event检查页面上几个主要 JavaScript 库中所有当前附加的事件处理程序。它适用于 jQuery、YUI 和其他几个。

Visual Event 是一个 JavaScript 书签,因此与所有主要浏览器兼容。