使用chrome内容脚本我想在加载内容之前删除网页中的几个iframe。
我发现,在扩展清单中使用属性run_at:document_start我的javascript是在主页面请求之后和处理DOM之前执行的,并且加载了图像,iframe等。此时逻辑上DOM结构不可用,我无法使用如下命令修改页面:
myelement=document.getElementById('iframeX');
myelement.parentNode.removeChild(myelement);
我如何访问和修改所需的页面数据呢?
答案 0 :(得分:7)
您需要在document_start上触发内容脚本并添加beforeload侦听器 - 您可以使用event.preventDefault选择性地阻止加载内容,然后删除尝试加载内容的帧:
document.addEventListener('beforeload', function(event) {
if (event.url.match('facebook')) {
event.preventDefault();
$(event.target).remove();
}
}, false);
我也blogged about an equivalent approach to using the beforeload event for Firefox。
答案 1 :(得分:2)
manifest.json应该包含content_scripts
,如:
"content_scripts": [
{
"matches": ["*://*/*"],
"js": [ "scan.js" ],
"run_at": "document_start",
"all_frames" : true
}
]