我正在編寫(xiě)一個(gè)外部腳本。我需要在每 30 秒清除一次的部分中添加一些元素。所以我綁定了MutationObserver內(nèi)容被擦除后恢復(fù)的內(nèi)容。在測(cè)試時(shí),我注意到MutationObserver即使我從不給他打電話,我的工作也是如此。這是我創(chuàng)建元素的代碼: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);}我從來(lái)沒(méi)有調(diào)用 function moveFiltersnor observeFilters,所以頁(yè)面上沒(méi)有 id 為“new-filter-place”的元素,但是當(dāng)其他元素被擦除時(shí),觀察者被觸發(fā)。有人可以向我解釋當(dāng)我從不調(diào)用它時(shí)如何觸發(fā)該功能嗎?
MutationObserver 即使從未被調(diào)用也會(huì)監(jiān)聽(tīng)
鴻蒙傳說(shuō)
2023-02-24 16:22:48