一尘不染

如何检查是否存在动态附加的事件侦听器?

javascript

这是我的问题:是否可以通过某种方式检查是否存在动态附加的事件侦听器?或者如何检查DOM中“onclick”(?)属性的状态?但是没有运气。这是我的html:

<a id="link1" onclick="linkclick(event)"> link 1 </a>
<a id="link2"> link 2 </a> <!-- without inline onclick handler -->

然后在Javascript中,将动态创建的事件侦听器附加到第二个链接:

document.getElementById('link2').addEventListener('click', linkclick, false);

该代码运行良好,但是我所有检测该附加侦听器的尝试均失败:

// test for #link2 - dynamically created eventlistener
alert(elem.onclick); // null
alert(elem.hasAttribute('onclick')); // false
alert(elem.click); // function click(){[native code]} // btw, what's this?

如果单击“为2添加onclick”,然后单击“[链接2]”,则事件触发良好,但“测试链接2”始终报告为false。有人可以帮忙吗?


阅读 445

收藏
2020-05-01

共1个答案

一尘不染

无法检查是否存在动态附加的事件侦听器。

查看是否附加了事件监听器的唯一方法是通过附加事件监听器,如下所示:

elem.onclick = function () { console.log (1) }

然后,您可以onclick通过返回!!elem.onclick(或类似方法)测试事件监听器是否已附加。

2020-05-01