removeEventListener不知道该函数

Din*_*ani 20 javascript jquery event-listener

一些第三方插件将附加eventListener到该网站.如何在不知道附加的函数的情况下删除eventListener.

我引用了这个removeEventListener,但我无法获得删除它的任何线索.

例如:getEventListeners(window)显示附加的事件.但是,当我尝试删除事件时使用window.removeEventListener("eventname")不工作而不知道该功能.

请帮助,提前致谢.

man*_*nji 18

getEventListeners(window) 将返回事件地图及其注册的事件监听器.

因此,对于DOMContentLoaded事件,例如,您可以拥有许多事件侦听器.如果您知道要删除的侦听器的索引(或者只存在一个),则可以执行以下操作:

var eventlistener = getEventListeners(window)["DOMContentLoaded"][index];
window.removeEventListener("DOMContentLoaded", 
                           eventlistener.listener,
                           eventlistener.useCapture);
Run Code Online (Sandbox Code Playgroud)

  • @Dineshkani这并没有在每个浏览器中实现,也不是规范的一部分.这不应该是接受的答案,除非您的问题仅针对Chrome.在这种情况下,应在问题中说明. (7认同)
  • @dfsq,`chrome` 是的,但不是 `firefox`。(无法测试 ie)。 (3认同)
  • 更方便,因为它还返回注销函数`remove`:`getEventListeners(window).DOMContentLoaded[0].remove()`。 (2认同)
  • @Dineshkani 嗯,这对于其他所有关注这个问题的人来说都是令人困惑的。下面jAndy已经给出了正确答案。 (2认同)

jAn*_*ndy 7

不幸的是,你做不到.您需要具有对事件处理函数的引用才能将其删除removeEventListener.

如果您无法获得该引用,那么您唯一的选择就是完全取代它Node.

  • 实际上,`getEventListeners`是可能的,因为它具有事件监听器功能。 (2认同)