Chrome似乎没有将内容脚本注入到MHTML类型的本地文件中。他们这么做可能是出于安全考虑。它们也不允许您下载具有MHTML扩展名的文件。这让我很怀疑。
如果本地文件类型是HTML,我的内容脚本被正确注入。
这是我的清单:
"content_scripts": [
{
"matches": [ "http://*/*", "https://*/*", "file://*/*", "<all_urls>" ],
"run_at": "document_start",
"js": [
"js/contentscript.js"
]
}
],
"permissions": [ "tabs", "http://*/*", "https://*/*"],
在扩展管理页面我也检查了:
[x] Allow Access to file URLs
最后得到的错误是:
test1.mhtml:1 Blocked script execution in 'file:///Users/test/Downloads/test1.mhtml'
because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
是否有办法解决这个问题,让我的脚本注入。html文件?
更新:下面是一个简单的测试扩展,显示脚本注入和一个测试html文件。请确保在扩展管理页面中选中此复选框。[x]允许访问文件url
更新2:找到了。这是一个chrome bug https://code.google.com/p/chromium/issues/detail?id=452901
更新3:所以它看起来像它的工作原理,但chrome调试器只是不显示在UI中的内容脚本文件时,文件类型是MHTML。
内容脚本是通过标准声明添加的,例如:
"content_scripts": [
{
"matches": [ "<all_urls>" ],
"run_at": "document_end",
"js": ["content.js"]
}
],
指出:
- 它不会显示在Chrome devtools -> Sources -> Content scripts面板中,这似乎是一个错误。
- MHTML有一些限制,所以某些功能可能无法工作,使用
console.log
无处不在