javascript – 使用MutationObserver监视带有指定选择器的元素插入的任何方法?
作者:互联网
假设我有一个HTML层次结构,例如:
<div id="container">
<div class="c">
<div class="c"></div>
</div>
<div class="c"></div>
<div class="c"></div>
</div>
我想监视这个HTML的DOM,以了解何时在任何地方插入带有类c的新元素.从我所看到的MutationObserver,没有办法做到这一点.
相反,我必须观察#container for childList事件并让它观察整个子树.如果我的真实世界代码仅具有上述内容,那么这将是正常的,但DOM是巨大的并且一直无法获得动态插入/删除.
我是否错过了使用MutationObserver监视具有特定类的元素插入的方法?
解决方法:
一种选择是使用Mutation Summary.
他们的API非常简单:
var observer = new MutationSummary({
callback: function (changes) {
changes.forEach(function (change) {
// Look only into added changes
change.added.forEach(function (el) {
// el is the DOM element matched
console.log(el);
// If you only need one match, you can disconnect the observer
// observer.disconnect();
})
})
},
queries: [{element:'.c'}],
rootNode: document.getElementById('container')
});
它支持CSS selectors的简单子集,但在您的情况下应该足够了.
标签:javascript,mutation-observers 来源: https://codeday.me/bug/20190711/1431624.html