Javascript Can';t删除所有事件侦听器

Javascript Can';t删除所有事件侦听器,javascript,event-listener,Javascript,Event Listener,我试图从一些网站上删除事件侦听器,但没有成功 这是网站上的事件侦听器: 有一个javascript脚本,用于创建以下事件: document.addEventListener('contextmenu', function (ev) { ev.preventDefault(); } ) 我试图用以下方法移除它: document.removeEventListener('contextmenu', function (ev) { ev.

我试图从一些网站上删除事件侦听器,但没有成功

这是网站上的事件侦听器:

有一个javascript脚本,用于创建以下事件:

document.addEventListener('contextmenu', function (ev) {
        ev.preventDefault();
    }
)
我试图用以下方法移除它:

document.removeEventListener('contextmenu', function (ev) {
                ev.preventDefault();
            }) 
我还尝试了:

(getEventListeners(document)).contextmenu = null
但它不起作用,我想是因为我使用了一个不同的新函数

有什么方法可以清除所有事件吗

引用:

您需要指定绑定到
removeEventListener

您可以通过创建一个函数并将引用传递给
addEventListener
removeventlistener
来实现这一点

//创建一个函数
右击功能(ev){
ev.preventDefault();
console.log('onRightClick')
}
//将函数传递给add和remove
document.addEventListener(“上下文菜单”,右键单击)

document.removeEventListener('contextmenu',右键单击)
要摆脱未知事件侦听器,您可以
克隆该元素,然后将原始内容移动到克隆内容中,然后用克隆替换原始内容


如果您不关心所包含元素的事件侦听器,还可以使用
.clone(true)
(或
false
,不记得)深度克隆原始元素。然后您不必移动内容。

您可以尝试克隆添加了所有侦听器的元素,并将其添加回其父元素。使用
克隆
,将丢失附加到元素的所有侦听器。试试这个

var element = document.getElementById('myElement'),
    clone = el.cloneNode(true);

element.parentNode.replaceChild(clone, element);

但是,这不适用于全局事件侦听器,或者简单地说,直接在文档而不是元素上设置的侦听器,因为文档是层次结构的根(不能有parentNode)

好的,我认为可以在不需要函数引用的情况下清除所有事件。否,但是您可以创建自己的实用程序函数来绑定事件,然后删除所有事件