我知道在DOM更改后的某个时候可能会调用MutationObservers回调.但问题是:这些回调的时机是什么时候?回调是否进入浏览器的事件队列?如果是这样,他们什么时候进入队列?
是回调:
例如,如果执行以下代码(此处定义了setZeroTimeout):
var target = document.body;
new MutationObserver(function(mutations) {
console.log('MutationObserver');
}).observe(target, {
attributes: true,
childList: true,
characterData: true
});
// Post message
setZeroTimeout(function () { console.log('message event'); });
// DOM mutation
target.setAttribute("data-test", "value");
Run Code Online (Sandbox Code Playgroud)
应该在"消息事件"之前还是之后打印"MutationObserver"?或者它是实现定义的?
我在Chromium 26上的"消息事件"之前得到了"MutationObserver",尽管DOM突变是在消息发布之后.也许这表明MutationObserver回调没有使用事件队列.
我搜索过HTML规范,DOM规范或浏览器实现文档,但我没有发现任何与此行为相关的内容.
有关MutationObservers回调时间的任何解释或文档吗?