javascript - 仅在没有其他监听器存在时才添加 Javascript EventListener?

标签 javascript events dom-events greasemonkey

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

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

我浏览了一堆与addEventListenerevent.StopPropagation、事件冒泡等相关的东西,但还没有找到任何方法完成这个。

有没有办法检测给定元素上的其他事件监听器,或者有其他方法可以到达我想要的位置?

最佳答案

您可以使用以下方法检查给定元素的 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()),这将不起作用。我建议您使用 jQuery , 你可以 handle events轻松使用它。

编辑:嗯,好吧,如果您也使用 addEventHandler,我相信它不会起作用。它仅在您使用 yourElement.onclick = anyFunction

设置事件时有效

关于javascript - 仅在没有其他监听器存在时才添加 Javascript EventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030885/

相关文章:

python - 具有 'externally' 更新属性的 PyTango 设备

javascript - 无法让 Javascript 函数从 gridview 中的文本框触发

javascript - 获取 e.target 父级的 onClick eventargs 并添加自定义数据以传播 onClick args

javascript - 使用 JavaScript 提交 HTML 表单确认 Google Chrome 上的延迟

c# - 异步运行 .net 事件?

c# - SerialPort_DataReceived 事件的问题

javascript - 检测iframe内容是否加载成功

javascript - 用于检测元素位置何时更改的 jQuery 事件

javascript - 检测 iframe 网页是否响应

javascript - 与 Angular 合作的第一天;我究竟做错了什么?