簡體   English   中英

處理完事件后是否有理由刪除EventListener DOMContentLoaded?

[英]Is there a reason to removeEventListener DOMContentLoaded after the event has been handled?

像我使用的許多其他人一樣

document.addEventListener('DOMContentLoaded',domLoadedFunc,!1);

與window.onload結合使用,可以處理在加載和解析DOM后立即觸發的事件。

我想知道是否有理由在觸發后顯式刪除DOMContentLoaded偵聽器。

(我們的domLoadedFunc內部):

if(document.removeEventListener){
    document.removeEventListener('DOMContentLoaded',domLoadedFunc,!1);
}

一旦它被觸發,是否有理由刪除DOMContentLoaded偵聽器?

一旦事件被觸發,它將不會再次觸發。 因此,如果您的代碼在第一次觸發后將其刪除,則不會有任何不同的結果。

從技術上講,如果你有很多事件處理程序都附加到文檔對象,那么刪除不再需要的事件處理程序可能會稍微快一些,但這與你編寫和執行的額外代碼相平衡只是為了刪除它。

就個人而言,我在這個優先順序中編寫思想代碼:正確性,可靠性,可讀性,可維護性,簡單性和性能,並且只在實際需要時才為了性能而做任何事情。 因此,遵循該層次結構,我不會刪除事件處理程序,因為前四個優先級中的任何一個都不需要這樣做,這不會有助於代碼的簡單性,也不會影響性能問題。


我看到刪除這樣的事件處理程序的一個原因是,如果您正在監視多個不同的事件,並且一旦觸發了第一個事件,您希望確保不響應任何其他事件。還要監控。 如果你隨后刪除了其他處理程序,那么你不必保留一個單獨的標志來跟蹤你已經完成工作的事實(例如,如果你正在偵聽DOMContentLoadedwindow.onload而且只是想要回應最先發生的那個。


僅供參考,如果您對jQuery的$(document).ready()的簡單javascript版本感興趣,它可以在所有瀏覽器中使用(在可用時使用DOMContentLoaded ,在沒有的情況下使用其他方法),聽起來您可能正在使用它,這里有一個很簡單易用的函數實現,名為docReady()純JavaScript等價於jQuery的$ .ready()如何在頁面/ dom准備就緒時調用函數 ,你可以使用或復制/學習來自的概念。

暫無
暫無

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

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