仅当没有其他侦听器时才添加Javascript EventListener?

Hel*_*ion 5 javascript events greasemonkey javascript-events

我是Javascript编程领域的一个相对tyro,所以请放轻松我.:-)

我正在尝试将eventListener添加到页面上的各种DOM元素.但是,我添加我的事件的一些元素已经有了一个eventListener,我不想取代那个; 我只想将我的事件添加到一个尚未与之关联的事件的元素中.

我查看了一堆与addEventListener,event.StopPropagation,事件冒泡等相关的东西,但还没有找到任何方法来实现这一点.

有没有办法检测给定元素上的其他事件侦听器,或者某种其他方式来获取我想要的位置?

rap*_*ael 3

您可以使用以下命令检查给定元素的 on[event] 属性是否已设置:

if (typeof(document.getElementById("element-id").onclick) == "undefined") {
  // event undefined
}

if (typeof(document.getElementById("element-id").onclick) == "function") {
  // event defined
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果使用 jQuery 等 javascript 库来定义事件(例如通过使用 ),则此方法将不起作用$("#element-id").click()。我建议您使用jQuery,您可以使用它轻松处理事件。

编辑:呃,好吧,据我所知,如果您也使用 addEventHandler ,它就不起作用。仅当您使用以下方式设置事件时它才有效yourElement.onclick = anyFunction