我正在编写一个扩展来检测某些脚本的某些恶意行为。这些脚本在加载页面后将一些节点添加到DOM中。我能够使用
获取这些节点document.addEventListener("DOMNodeInserted", checkContents, false);
但是如何阻止它们被加载?这可以在chrome或firefox中完成吗?
答案 0 :(得分:2)
将MutationObserver与childList和子树一起使用。
var grid = iframe.contentDocument.getElementById('newtab-grid');
var mobs = new iframe.contentWindow.MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type, mutation);
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
var link = mutation.target.querySelector('.newtab-link');
if (link) {
link.setAttribute('target', '_parent');
console.log('set target on this el')
} else {
console.log('this ell has no link BUT it was an added el')
}
}
});
});
mobs.observe(grid, {
childList: !0,
subtree: !0
});
现在,这将告诉您何时添加节点,它会为您提供mutation.addedNodes
中添加的内容。你可以通过迭代并删除添加的内容。我不确定你是否可以阻止它添加,但你可以在添加它之后删除它。