【发布时间】:2020-04-20 04:01:11
【问题描述】:
小提琴:https://jsfiddle.net/7gj26hqu/
我希望有一个MutationObserver 可以检测其自身内的所有新节点。在示例中,我设置了{childList: true, subtree: true},但div#nested 没有出现在MutationObserver 中(显示在控制台中)。
如何让观察者检测子节点的任何深度?
const domObserver = new MutationObserver((records) => {
records.forEach((record) => {
console.log(record)
})
})
domObserver.observe(document.querySelector('#frame'), {childList: true, subtree: true})
// copy child nodes out of #template (as a string) and inject them into #frame for the observer to detect
document.querySelector('#frame').innerHTML = document.querySelector('#template').innerHTML
<div id="frame"></div>
<div id="template" style="display: none;">
<div class="level-1">
<div class="level-2">
<div id="nested">
I exist in the DOM but am not being seen by the MutationObserver
</div>
</div>
</div>
<div class="level-1">
<div class="level-2">
</div>
</div>
<div class="level-1">
<div class="level-2">
</div>
</div>
</div>
【问题讨论】:
-
它工作正常。将其全部加载到控制台需要很长时间。做
const domObserver = new MutationObserver(records=>{ records.forEach(record=>{ console.log(record.target.innerHTML); }); });
标签: javascript mutation-observers