显示DOM元素事件及其处理程序

时间:2010-08-09 07:07:07

标签: javascript jquery

  

可能重复:
  Inspect attached event handlers for any DOM element

是否有一个工具 - 例如浏览器扩展,jQuery控制台脚本,bookmarklet或Firebug插件 - 显示可以由特定DOM元素触发的所有事件,并包括当前正在侦听这些事件的任何事件处理程序?

2 个答案:

答案 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元素的事件处理程序,但它不会列出没有已绑定到处理程序的事件。