Javascript 突变完全

Javascript 突变完全,javascript,jquery,dom,mutation,Javascript,Jquery,Dom,Mutation,我包括一个第三方javascript,它反过来将子元素附加到DOM中,并且执行此操作所花费的时间是可变的,有没有办法让我知道何时完成了变异,例如DOMNodeInserted完成了 我现在的代码看起来像 $("#searchgadget").bind("DOMNodeInserted",function(){ alert("added");} 正如预期的那样,我会收到每500多个添加到“searchgadget”的元素的警报,然而,我只感兴趣的是,当这完成时,我只想在最后一次域节点插入后执行一

我包括一个第三方javascript,它反过来将子元素附加到DOM中,并且执行此操作所花费的时间是可变的,有没有办法让我知道何时完成了变异,例如DOMNodeInserted完成了

我现在的代码看起来像

$("#searchgadget").bind("DOMNodeInserted",function(){
alert("added");}

正如预期的那样,我会收到每500多个添加到“searchgadget”的元素的警报,然而,我只感兴趣的是,当这完成时,我只想在最后一次域节点插入后执行一些逻辑。无论如何要这样做?

假设附加节点的代码是同步运行的,它们之间不会有任何延迟。可以在每次插入节点时设置超时。当超时完成时,所有的突变都完成了

insertTimeout = null;
$("#searchgadget").on("DOMNodeInserted", function() {
    clearTimeout(insertTimeout);
    insertTimeout = setTimeout(function() {
        alert("added");
    }, 100);
});

域节点已被删除。使用多个观察者为什么选择100毫秒?由于渲染html需要2到25秒的时间,我收到了多个警报,如果我只收到一个警报就好了。我认为时间不重要。正如我在问题中所写的,我假设所有的修改都是同步完成的,所以在所有修改完成之前,超时不会运行。如果我的假设是错误的,那么答案将不起作用。25秒更新页面?用户真的忍受了吗?它在执行此操作时是否显示任何类型的进度指示器?您可以等待它删除指示器。或者这就是问题所在--您希望显示一个指示器,并在所有修改完成后删除它?如果应用程序没有提供这方面的任何指示,则浏览器或您的代码实际上无法知道。请使用
MutationObserver
检测何时删除进度指示器。