Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不知道函数的情况下删除EventListener_Javascript_Jquery_Event Listener - Fatal编程技术网

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已经给出了正确的答案。