簡體   English   中英

當刪除附加的DOM節點(如事件的removeEventListener)時,是否應該刪除/斷開MutationObservers?

[英]Should MutationObservers be removed/disconnected when the attached DOM node is removed like removeEventListener for events?

在這里找到一個幾乎相同的問題: 移除元素時是否應斷開IntersectionObserver的連接

我還沒有找到說明從DOM中刪除帶有附加的MutationObserver (MO)的元素時應該怎么做的文檔。 該API不提供removeEventListener類的remove方法,而只是一個僅涉及子節點的臨時disconnect方法。 垃圾收集最終會出現,但似乎在SPA webapp中會變得凌亂//腫。 我可以使用delete關鍵字刪除保存MO的變量,但是我已經讀過有關這樣做的警告(不一定是MO),而不是讓垃圾回收處理它。

因此,我正在尋找官方信息,例如“當刪除關聯的DOM元素時刪除MO,”或“當不再使用分配的變量時MO將自動進行垃圾回收”,或“ MO應該從其父對象中刪除”如果它們不再被使用,”等等。

規格: https//dom.spec.whatwg.org/#mutation-observers

當我對這個主題進行更多研究時,似乎找到了答案。

在垃圾回收的眼中 ,MO與DOM元素緊密耦合,而其后代則松散耦合。 因此,似乎您可以隨時刪除DOM元素,而垃圾回收應該可以處理其余的內容。

官方回答https://dom.spec.whatwg.org/#garbage-collection

4.3.4。 垃圾收集

節點在其注冊觀察者列表中強烈引用了注冊觀察者。

節點的注冊觀察者列表中的注冊觀察者對該節點的引用很弱。

暫無
暫無

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

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