我需要使用 mutationobserver 防止 DOM-Change。
我有(过去)以下代码来防止特定更改:
document.bind("DOMSubtreeModified", function() {
document.find('.Xx.xJ:Contains("wham")').closest("[jsmodel='XNmfOc']").hide();
});
由于性能原因,我不想检查任何 dom-change 的完整文档,而只想添加内容,所以我改为(现在):
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
[].slice.call(mutation.addedNodes).forEach(function (addedNode) {
StartFilter(addedNode);
});
});
});
observer.observe(document, {
childList: true,
subtree:true,
characterData:true,
attributes:true
});
function StartFilter(newNode) {
$(newNode).find('.Xx.xJ:Contains("wham")').closest("[jsmodel='XNmfOc']").hide();
}
但这并没有真正起作用。我的猜测是“newNode”并不是对 DOM-Element 的真正引用。(选择器有效,"$(newNode).find('.Xx.xJ:Contains("wham")').closest("[jsmodel='XNmfOc']")"
返回一个元素)。
我没有找到任何方法/属性来拒绝 MutationObserver 中的 dom 更改。有没有办法在不每次检查整个文档的情况下实现我想要的?