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