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

时间:2010-01-08 21:29:43

标签: javascript javascript-events events greasemonkey

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

请注意,如果使用jQuery等javascript库来定义事件(例如使用$("#element-id").click()),则无法使用此功能。我建议您使用jQueryhandle events可以轻松使用它。

编辑:嗯,好吧,如果你也在使用addEventHandler,它就不起作用了。它仅适用于使用yourElement.onclick = anyFunction

设置活动的情况