簡體   English   中英

為什么我不能使用 off() 刪除事件偵聽器?

[英]Why can't I remove event listeners using off()?

我正在嘗試從 DOM 中動態刪除一個事件。 為此,我使用 Chrome(版本 79)開發工具,頁面https://www.omgubuntu.co.uk/category/news?utm_source=menu

在 Elements 選項卡中,我轉到 Event Listeners,並查找 'load' 事件,我在 Window 元素上找到了 3 個事件。 所以在控制台中,我輸入:

$(window).off('load');

命令執行沒有錯誤,但似乎沒有任何改變,即使我按下事件部分中的刷新按鈕。 我期待 Window 的所有“加載”事件都會消失。

在此處輸入圖片說明

我在許多其他網站上也有同樣的問題,但在我的本地網頁上運行良好(這就是我知道我以正確的方式使用 JQuery 的方式)...

.off()僅刪除通過.on()方法添加的事件,因此任何通過其他 API 添加的事件都不會受到影響。

現在,當您說即使我按下事件部分中的刷新按鈕時。 我期待 Window 的所有“加載”事件都會消失。 ,您誤解了頁面處理方式的性質。 如果您刷新頁面,它的所有代碼都會再次處理,因此即使您成功刪除了控制台中的處理程序,它們也會全部返回,因為頁面會重新開始。

了解您在控制台中執行的操作只會影響瀏覽器中加載的頁面的當前實例。

要刪除現有偵聽器,請使用getEventListeners命令行 API:

getEventListeners(window).load.forEach(x=>window.removeEventListener('load',x.listener))

或者只需單擊 Elements Event listeners面板中的Remove按鈕:

在此處輸入圖片說明

暫無
暫無

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

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