【发布时间】:2018-05-31 07:18:52
【问题描述】:
我需要知道 element.cloneNode(true) 是否可以与 JavaScript 异步。我跑了这样的事情:
tempMu = document.createElement("section");
var mu = new MutationObserver(function(mus) {
console.log("mus", mus);
});
mu.observe(tempMu, {childList:true, subtree:true});
setTimeout(()=>mu.disconnect(), 1000);
tempMu.appendChild(aLargeDiv.cloneNode(true));
我只收到了一个突变回调,但这当然不能说服我。有人知道吗?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
@Bergi 我不买那个。请参阅此处:2.5.2 HTML 中的动态标记插入 (w3.org/TR/2008/WD-html5-20080610/dom.html)。我在那里看不到任何关于同步/异步的信息(除了他们声明事件被触发的文档节点)。
-
这个问题似乎被误导了。克隆节点不会触发任何类型的突变事件。插入一个新项目可以触发突变,但是使用克隆或其他方法来创建该新元素是无关紧要的。您的代码只会触发一个突变,因为您只执行过一个突变,就是这样。您稍后断开连接的事实不会对此产生任何影响。
-
如果你的问题是突变观察者回调是否在
setTimeout的回调之前运行,这就是你应该问的,但关于同步逻辑和cloneNode。 -
@loganfsmyth 你不只是假设它是如何工作的吗?
标签: javascript asynchronous dom mutation-observers clonenode