Chrome内容脚本注入在MHTML文件



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无处不在

最新更新