在我的扩展程序中,我尝试将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://");
答案 0 :(得分:1)
我怀疑这是因为您的脚本是异步执行的。 Chrome仅保证DOM已为document_end
内容脚本做好准备。也许你可以在document_start
注入css,使得所有图像在处理之前都不可见