是否有一个工具 - 例如浏览器扩展,jQuery控制台脚本,bookmarklet或Firebug插件 - 显示可以由特定DOM元素触发的所有事件,并包括当前正在侦听这些事件的任何事件处理程序?
答案 0 :(得分:3)
您正在寻找:
<强> FireQuery 强>
http://firequery.binaryage.com/
要自己动手,您始终可以从events data
访问jQuery object
结构。
示例:
$(document.body).bind('click', function(){
alert('I am an event handler!');
});
$.each($(document.body).data('events'), function(i,v){
console.log(i);
$.each(v, function(i2,v2){
console.log(' > ', v2.handler.toString());
});
});
这会将所有事件列入您的FireBug / Webkit控制台,并将其事件处理函数打印为纯文本。您可以删除.toString()
部分,或只记录v2
获取更详细的信息。
<强>更新强>
就像Anurag评论的那样,它只显示通过jQuery
绑定的处理程序。它不会查找addEventhandler() / addHandler
或内联事件处理程序。
您可以通过检查on-xxx
属性来查找内联事件处理程序。 DOM level3
确实实现了hasEventListenerNS
,但我认为任何浏览器都不会使用它们。
答案 1 :(得分:1)
Chrome的内置开发人员栏显示绑定到特定DOM元素的事件处理程序,但它不会列出没有已绑定到处理程序的事件。