我正在編寫一個外部腳本。我需要在每 30 秒清除一次的部分中添加一些元素。所以我綁定了MutationObserver內容被擦除后恢復的內容。在測試時,我注意到MutationObserver即使我從不給他打電話,我的工作也是如此。這是我創建元素的代碼:function moveFilters(){ if($("#new-filter-place").length == 0){ $("<h1 id='new-filter-place'>TEST</h1>").insertAfter($('#category-top10')); observeFilters(); }}這是我的觀察者:function observeFilters(){ console.log('test'); var target = document.querySelector("#new-filter-place"); var observer = new MutationObserver(function(mutations){ mutations.forEach(function(mutation){ var nodes = Array.from(mutation.removedNodes); var directMatch = nodes.indexOf(target) > -1; var parentMatch = nodes.some(parent => parent.contains(target)); if(directMatch || parentMatch){ observer.disconnect(); moveFilters(); } });})var config = { subtree: true, childList: true}; observer.observe(document.body, config);}我從來沒有調用 function moveFiltersnor observeFilters,所以頁面上沒有 id 為“new-filter-place”的元素,但是當其他元素被擦除時,觀察者被觸發。有人可以向我解釋當我從不調用它時如何觸發該功能嗎?
MutationObserver 即使從未被調用也會監聽
鴻蒙傳說
2023-02-24 16:22:48