即使从未调用过MutationObserver也会监听

问题描述

我正在编写一个外部脚本。我需要在每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);
}

我从来没有调用过moveFilters函数或observeFilters函数,因此页面上没有id为“ new-filter-place”的元素,但是当其他元素被擦除时,会触发观察者。

有人可以解释一下当我从不调用函数时如何触发它吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)