JavaScript:将所有事件处理程序重置为默认值/禁用自定义处理程序

时间:2016-04-07 05:31:15

标签: javascript jquery

是否有可能以某种方式重置所有事件处理程序/侦听器,在页面上执行JavaScript代码的过程中附加到其默认值,即禁用所有自定义功能,就好像页面加载时没有JavaScript支持?< / p>

我知道我可以,例如,使用JQuery&#39; $(selector).off()重置单个元素的处理程序,但是当又一个&#34;聪明的&#34;网站覆盖右键单击,Ctrl + A,Ctrl +箭头或类似的东西,我只是想把它全部关闭 - 有时我不太愿意挖掘他们的代码来找出他们所附带的内容它会,并且会喜欢更简单,一刀切的解决方案。有吗?

更新:发现类似的问题 Remove All Event Listeners of Specific Type - 接受的答案表明特定事件类型不可能。到2016年仍然如此吗?

3 个答案:

答案 0 :(得分:2)

也许你想试试这个?

$("*").unbind();

http://www.w3schools.com/jquery/event_unbind.asp

答案 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。