我对MutationObserver
用于检测某个HTML元素是否添加到HTML页面中的任何位置感兴趣。例如,我要说的是,我想检测是否<li>
在DOM中的任何位置添加了。
MutationObserver
到目前为止,我所看到的所有示例仅检测是否将节点添加到特定容器中。例如:
一些HTML
<body>
...
<ul id='my-list'></ul>
...
</body>
MutationObserver
定义
var container = document.querySelector('ul#my-list');
var observer = new MutationObserver(function(mutations){
// Do something here
});
observer.observe(container, {
childList: true,
attributes: true,
characterData: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
因此,在此示例中,MutationObserver
安装程序将监视非常特定的容器(ul#my-list
),以查看是否将任何<li>
附加到该容器。
如果我不想那么具体,并<li>
在整个HTML正文中关注,是否会出现这样的问题:
var container = document.querySelector('body');
我知道它可以在我为自己设置的基本示例中起作用...但是不建议这样做吗?这会导致性能下降吗?如果是这样,我将如何检测和衡量该性能问题?
我认为也许有一个原因,所有MutationObserver
示例都针对其目标容器如此具体...但是我不确定。