如何在处理DOM之前使用谷歌浏览器内容脚本修改网页?

Cor*_*ius 7 javascript google-chrome-extension

使用chrome内容脚本我想在加载内容之前删除网页中的几个iframe.

我发现,在extentions清单中使用属性run_at:document_start我的javascript是在主页面请求之后和DOM处理之前执行的,并且加载了图像,iframe等.此时逻辑上DOM结构不可用,我不能使用如下命令修改页面:

myelement=document.getElementById('iframeX');

myelement.parentNode.removeChild(myelement);
Run Code Online (Sandbox Code Playgroud)

我如何访问和修改所需的页面数据呢?

Ami*_*hoo 7

您需要在document_start上触发内容脚本并添加beforeload侦听器 - 您可以使用event.preventDefault选择性地阻止加载内容,然后删除尝试加载内容的帧:

    document.addEventListener('beforeload', function(event) {
        if (event.url.match('facebook')) {
            event.preventDefault();
            $(event.target).remove();
        }
    }, false);
Run Code Online (Sandbox Code Playgroud)

我在博客上发表了关于使用Firefox的beforeload事件的等效方法.