我在 chrome 扩展中有以下代码:
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.type === "childList") {
Log.Debug("mutation: Childlist:"+mutation.addedNodes.length);
forEach.call(mutation.addedNodes, function (addedNode) {
if (addedNode.classList !== undefined) {
if (addedNode.classList.contains('nja')) {
Log.Debug("DOM PD:"+addedNode.classList);
DoFancyStuff(addedNode);
}
}
}
}});
这发生在动态添加内容的网站上。(谷歌+)。如果用户向下滚动并添加一些新元素,一切都会完美无缺。
如果用户离开浏览器一段时间并单击导致显示许多新元素的按钮,则 MutationObserver 似乎错过了一些节点。我可以在调试窗口中验证此行为。(一些添加了“nja”类的 div 被写入控制台,有些则没有)
所以对我来说,这似乎只有在一次没有添加太多 div 的情况下才有效。是否有任何配置可以改变这种行为?
(因为这是一个 chrome 扩展,我只需要 chrome 的解决方案,而不需要任何其他浏览器)