我有兴趣使用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>
's 附加到它上面。
如果我想不那么具体<li>
,并且像这样在整个 HTML 正文中观察' 是否有问题:
var container = document.querySelector('body');
我知道它适用于我为自己设置的基本示例......但是不建议这样做吗?这会导致性能不佳吗?如果是这样,我将如何检测和衡量该性能问题?
我想也许有一个原因,所有的MutationObserver
例子都是针对它们的目标容器的……但我不确定。