是否有可能以某种方式重置所有事件处理程序/侦听器,在页面上执行JavaScript代码的过程中附加到其默认值,即禁用所有自定义功能,就好像页面加载时没有JavaScript支持?< / p>
我知道我可以,例如,使用JQuery&#39; $(selector).off()
重置单个元素的处理程序,但是当又一个&#34;聪明的&#34;网站覆盖右键单击,Ctrl + A,Ctrl +箭头或类似的东西,我只是想把它全部关闭 - 有时我不太愿意挖掘他们的代码来找出他们所附带的内容它会,并且会喜欢更简单,一刀切的解决方案。有吗?
更新:发现类似的问题 Remove All Event Listeners of Specific Type - 接受的答案表明特定事件类型不可能。到2016年仍然如此吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
这样的事情应该是可能的(但我还没有尝试过):
制作executes at document start的GreaseMonkey脚本或浏览器扩展程序(类似于浏览器扩展程序)。
它应重新定义SaleItem item = new Book(0, "BookTitle", 5.99, 1, "Author", 500);
以将事件名称,目标和处理程序添加到数组,然后调用原始函数。
然后,您可以随意遍历数组并EventTarget.addEventListener
所有数组。或者,对于更积极的方法,您可以将removeEventListener
重新定义为无操作。
这不能解决任何声明为EventTarget.addEventListener
字段的处理程序;你需要手动seek and destroy这些。
答案 2 :(得分:0)
如果要解除特定事件的绑定,例如点击,请尝试迭代body元素的所有子元素,如下所示:
$('body').children().off('click');
这是JSFiddle。
如果您需要取消绑定多个不同的事件,请尝试创建一个函数并将一系列事件传递给unbind。