内容脚本将'run_at'设置为'document_end'但在页面加载后修改DOM

时间:2013-09-19 11:43:37

标签: dom google-chrome-extension content-script

在我的扩展程序中,我尝试将DOM中的<img>标记的网址修改为https://...我已将run_at属性设置为document_end,但不同于Chrome文档,它会在页面子资源(图像)一旦显示后修改DOM(图像会暂时显示一段时间(但很烦人),然后会因为这些图像不支持https而消失)。我期待,如果图像不支持https,它们即使在短时间内也不会显示。代码如下。

的manifest.json:

...

"content_scripts": [    
        {
            "matches": [
                "http://*/*",
                "https://*/*"
            ],
            "js": ["content.js"],
            "all_frames": true,
            "run_at": "document_end"
        }
    ],
...

content.js:

images = document.getElementsByTagName("img");
for (var i = 0; i < images.length; i++)
        if (images[i].src.indexOf("http://") === 0)
                images[i].src = images[i].src.replace("http://", "https://");

1 个答案:

答案 0 :(得分:1)

我怀疑这是因为您的脚本是异步执行的。 Chrome仅保证DOM已为document_end内容脚本做好准备。也许你可以在document_start注入css,使得所有图像在处理之前都不可见