javascript - 在未动态修改的页面中使用 MutationObserver
问题描述
这似乎是一个显而易见的问题,但我在任何文档中都找不到任何明确的答案。
我想确保在第一次加载页面时以及通过添加或删除节点来修改页面时运行一个函数。
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>
解决方案
推荐阅读
- ios - 使用 SwiftUI 开发 iOS 13 和 14
- java - Java 多方法隐藏设计
- machine-translation - 机器翻译的词汇量表
- c - 发送`struct siginfo.si_int`是否需要使用SI_QUEUE从内核发送实时信号?
- asp.net-core - 为什么控制器 no 仅在 Html.PartialAsync 中有效?
- c++ - 这些堆栈声明有什么区别,堆栈
和堆栈 ? - shell - 如何从 AWK 语句运行 CURL
- python - SQLAlchemy Core 可以与 Flask-SQLAlchemy 一起使用吗?
- html - 为每个 div 创建一个 div 并通过查找当前 div 图像的来源来设置链接
- javascript - 具有二维数组js的矩阵