如何检查附加到元素/文档的 JavaScript 事件侦听器/处理程序?

尝试在线搜索,但看起来不像我可以正确制定搜索查询。

如何使用 jQuery 或 javascript 列出所有附加到 element/document/window 或以 DOM 格式显示的处理程序或事件侦听器?

74580 次浏览

In jQuery before 1.8, try using $("#element").data("events")

EDIT:

还有 jQuery 扩展: ListHandlers

我刚发现视觉事件2:

Http://www.sprymedia.co.uk/article/visual+event+2

进入“让它去部分”,并拖动文本链接到您的书签工具栏 转到一个有事件的页面,点击书签

在 FF Mac 中测试

在调试时,如果只想查看是否有事件,我建议使用右下角的 Visual EventElements" section of Chrome's Developer Tools: select an element and look for "Event Listeners

在代码中,如果在1.8版之前使用 jQuery,则可以使用:

$(selector).data("events")

to get the events. As of version 1.8, this is discontinued (see 这张虫子罚单). You can use:

$._data(element, "events")

但是不推荐这样做,因为它是一个内部的 jQuery 结构,并且在以后的版本中可能会发生变化。

这个问题 有一些可能有用的答案,但没有一个像 $(selector).data("events")那样特别优雅。

没有 jQuery:

如果使用 elem.addEventListener()方法添加侦听器,则不容易列出这些侦听器。您可以重写 EventTarget.addEventListener()方法,用您自己的方法包装它。然后你会得到信息,哪些听众被注册了。

var f = EventTarget.prototype.addEventListener; // store original
EventTarget.prototype.addEventListener = function(type, fn, capture) {
this.f = f;
this.f(type, fn, capture); // call original method
alert('Added Event Listener: on' + type);
}

Working example you can find at http://jsfiddle.net/tomas1000r/RDW7F/