Javascript 在不知道函数的情况下删除EventListener
一些第三方插件会将Javascript 在不知道函数的情况下删除EventListener,javascript,jquery,event-listener,Javascript,Jquery,Event Listener,一些第三方插件会将eventListener附加到站点中。如何在不知道附加的函数的情况下删除eventListener 我指的是这个,但我找不到任何线索来删除这个 例如:getEventListeners(窗口)显示附加的事件。但是,当我尝试使用window.removeEventListener(“eventname”)删除事件时,如果不知道该函数,该函数将无法工作 请帮忙,提前谢谢 不幸的是,你不能这样做。您需要有一个对事件处理程序函数的引用,才能通过removeEventListener将
eventListener
附加到站点中。如何在不知道附加的函数的情况下删除eventListener
我指的是这个,但我找不到任何线索来删除这个
例如:getEventListeners(窗口)
显示附加的事件。但是,当我尝试使用window.removeEventListener(“eventname”)
删除事件时,如果不知道该函数,该函数将无法工作
请帮忙,提前谢谢 不幸的是,你不能这样做。您需要有一个对事件处理程序函数的引用,才能通过
removeEventListener
将其删除
如果无法获取该引用,您唯一的选择是完全替换节点
getEventListeners(窗口)
将返回事件及其注册事件侦听器的映射
因此,对于DOMContentLoaded
事件,例如,您可以有许多事件侦听器。如果知道要删除的侦听器的索引(或者如果只有一个),可以执行以下操作:
var eventlistener = getEventListeners(window)["DOMContentLoaded"][index];
window.removeEventListener("DOMContentLoaded",
eventlistener.listener,
eventlistener.useCapture);
jAndy有没有办法通过jquery或javascript获取该引用。因为该事件是由第三方添加的,并且该事件附加在窗口中element@Dineshkani恐怕没有(但如果我错了,希望一些忍者会纠正我)。通过
addEventListener
本机添加的事件不会存储在Javascript可访问的任何位置。感谢您的回复@jAndy@Dineshkani你能解释一下你为什么要这么做吗?如果第三方代码添加了监听器,那是因为它可能需要它来正常工作……实际上,它可以使用getEventListeners
,因为它包含事件监听器函数。更方便的是,它还返回注销函数remove
:getEventListeners(window)。DOMContentLoaded[0].remove()
@dfsq,chrome
是,但不是firefox
。(无法测试ie)。@Dineshkani这不是每个浏览器都能实现的,也不是规范的一部分。这不应该是公认的答案,除非你的问题只针对Chrome。在这种情况下,应该在问题中说明。@plalx是的,我知道。我一定会找到所有浏览器的答案。我接受了这个答案,因为它提供了一些线索。@Dineshkani好吧,这让所有其他人都感到困惑。下面jAndy已经给出了正确的答案。