如何检查元素是否有事件?

时间:2015-05-16 22:36:50

标签: javascript events

我有一个元素,我想知道这个元素是否有事件吗?我也想知道这个事件的类型。

HTML

<a id="on_btn" href="javascript:;">On</a>

的Javascript

document.getElementById('on_btn').addEventListener('click', function(){
    alert('Hello');
})

如何知道之前的<a>标记是否有事件?什么类型的事件?假设我不知道。

注意:我想使用本机JavaScript而不是jQuery。

1 个答案:

答案 0 :(得分:0)

原生javascript没有办法查询哪些事件处理程序附加到给定对象。

如果这是某种“黑客”项目,并且您可以保证在其他代码安装了您要跟踪的事件侦听器之前可以运行一些Javascript,那么您可以“替换”addEventListener()方法您自己的版本所关注的元素,记录了正在设置的事件处理程序,然后调用原始addEventListener()。我认为这更像是一个用于诊断或发现的“黑客攻击”项目,而不是生产网站中可能使用的项目。

同样,对于诊断,您可以使用Chrome调试器之类的调试工具来查看附加到调试器中给定DOM对象的事件处理程序。例如,在Chrome调试器中,如果右键单击页面中的元素并选择“检查元素”,它将打开页面的“元素”视图,其中包含您单击的元素。在打开的窗口的右上角,您可以单击“事件监听器”选项卡,然后它将列出每个具有监听器的事件。如果展开给定事件(如“单击”),则可以看到该对象的每个单击处理程序。

以下是Chrome调试器中事件监听器标签的屏幕截图:

enter image description here