簡體   English   中英

JavaScript:將所有事件處理程序重置為默認值/禁用自定義處理程序

[英]JavaScript: reset all event handlers to defaults / disable custom handlers

是否有可能以某種方式重置所有事件處理程序/偵聽器,在頁面上執行JavaScript代碼的過程中附加到其默認值,即禁用所有自定義功能,就好像頁面是在沒有JavaScript支持的情況下加載的?

我知道我可以,例如,使用JQuery的$(selector).off()重置單個元素上的處理程序,但是當另一個“聰明”站點覆蓋右鍵單擊時,Ctrl + A,Ctrl +箭頭或類似的東西我只是想把它全部關閉 - 有時我不太傾向於挖掘他們的代碼以找出他們所附加的東西,並且會喜歡更簡單,一刀切的解決方案。 有嗎?

更新:發現類似問題刪除特定類型的所有事件監聽器 - 接受的答案表明特定事件類型是不可能的。 到2016年仍然如此嗎?

也許你想試試這個?

$("*").unbind();

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

這樣的事情應該是可能的(但我還沒試過):

創建一個在文檔啟動時執行的GreaseMonkey腳本或瀏覽器擴展(類似於瀏覽器擴展)。 它應重新定義EventTarget.addEventListener以將事件名稱,目標和處理程序添加到數組,然后調用原始函數。 然后,您可以隨意迭代數組並removeEventListener所有這些數據。 或者,對於更積極的方法,您可以將EventTarget.addEventListener重新定義為無操作。

這不能解決任何聲明為onXXXXX字段的處理程序; 你需要手動尋找並銷毀它們。

如果要取消綁定特定事件(如單擊),請嘗試迭代body元素的所有子元素,如下所示:

$('body').children().off('click');

這是一個JSFiddle

如果您需要取消綁定多個不同的事件,請嘗試創建一個函數並將一系列事件傳遞給unbind。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM