我正在编写一个简单的用户脚本,如果Facebook帖子包含某些特定词语,它将自动隐藏该帖子。核心功能已经实现,但我的MutationObserver似乎无法正确读取mutation.addedNodes的className。我循环遍历mutation.addedNodes并检查其中是否有class为userContentWrapper的元素,但测试结果始终为false,即使该元素确实有这个class。
我只能假设观察者在节点完全形成之前分析了该节点,并且还没有设置所有属性。我该如何让观察者等待,直到节点完全形成才处理它?或者是我没有理解问题吗?
提前感谢您的帮助...
var startObserver = function() {
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var added = mutation.addedNodes;
for (var i = 0; i < added.length; i++) {
if (/\buserContentWrapper\b/.test(added[i].className)) {
processFilter(added[i]);
}
}
});
});
var obj = {childList: true, subtree: true, attributes: true};
observer.observe(document.documentElement, obj);
};
我只能假设观察者在节点完全形成之前分析了该节点,并且还没有设置所有属性。我该如何让观察者等待,直到节点完全形成才处理它?或者是我没有理解问题吗?
提前感谢您的帮助...
childList
和subtree
添加到观察参数中不会自动深入挖掘吗? - CliffsomeNode.appendChild(anotherNodeWith1000children)
不会被扩展,因为它只是一个操作。 - wOxxOmchildList
的工作方式,然后subtree
会自动搜索所有后代。那么subtree
实际上在做什么呢? - Cliffsubtree
报告后代的变化。一个变化可能包括通过insertAdjacentHTML
或其他方式添加或删除多个节点。而childList
使观察者关注这种活动。如果没有它,在这些情况下回调函数将不会被执行。 - wOxxOmelse if
中,应该使用node.getElementsByClassName()
而不是node.getElementsByTagName()
吧? - tklives