我知道,DOM变化之后的某个MutationObservers回调可能被调用。 但问题是:什么是这些回调的时机? 不要回调进入浏览器的事件队列? 如果是这样,他们什么时候进入队列?
是回调:
- 所谓立即DOM突变之后进行,
- 一旦被称为操纵DOM完成的功能,
- 一旦被称为调用堆栈是空的,
- 入队的DOM突变后立即发生,
- 操纵DOM完成,或尽快排队的功能
- 在其他时间?
例如,如果下面的代码段被执行(与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");
如果“MutationObserver”之前“消息事件”或之后进行打印? 或者是实现定义?
我得到“MutationObserver”“消息事件”之前,铬26,虽然DOM突变是消息发布后。 也许这是表明MutationObserver回调不使用事件队列。
我用Google搜索的HTML规范,DOM规范或浏览器执行文件,但我没有发现与此相关的任何行为。
在MutationObservers的时序任何解释或文件回调吗?