【发布时间】:2020-12-31 21:24:23
【问题描述】:
这似乎是一个显而易见的问题,但我在任何文档中都找不到任何明确的答案。
我想确保在第一次加载页面和通过添加或删除节点修改页面时运行函数。
MutationObserver 是否应该在页面加载时触发,至少一次,当解析 DOM 时,即使没有添加或删除节点的 JS?
我的测试似乎表明确实如此。当我让观察者观察 document.body 且 childList 为 true 时,观察者总是至少获得一条记录,其中包括整个文档正文。但是,我希望有一个明确的答案,最好是从文档中(我找不到),因为这可能在某种程度上取决于浏览器。
这是我用来测试的简单代码:
<!DOCTYPE html>
<head>
<title>Observer test</title>
</head>
<body>
<script type='text/javascript'>
var config = { childList: true, subtree: true };
function mutationCallback (mutationsList, observer) {
console.log('Triggered');
for(let mutation of mutationsList) {
console.log(mutation.type);
console.log(mutation.target);
for (let node of mutation.addedNodes) {
console.log(node)
}
}
}
observer = new MutationObserver(mutationCallback);
observer.observe(document.body, config);
</script>
</body>
</html>
【问题讨论】:
标签: javascript dom mutation-observers