【发布时间】:2015-09-23 15:44:48
【问题描述】:
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.
有没有办法解决这个问题并将我的脚本注入 .mhtl 文件?
更新: Here is a simple test extension 显示脚本注入和测试 mhtml 文件。确保在扩展管理页面中选中此复选框。 [x] 允许访问文件 URL
更新 2: 找到了。这是一个chrome错误https://code.google.com/p/chromium/issues/detail?id=452901
更新 3: 所以看起来它可以工作,但是当文件类型为 MHTML 时,chrome 调试器不会在 UI 中显示内容脚本文件。
【问题讨论】:
-
您好,您是查看 chrome 代码还是在猜测?保存在 MHTML 中需要一个 chrome 标志。但是从文件系统打开一个就可以了。下载 mhtml 也被阻止。我真的希望注入内容脚本能够正常工作。 :-(也许不是
-
您是仅使用 mhtml 提取数据,还是还与页面交互,例如,填写
input元素?我可以完美地从 mhtml 文件中提取数据,但我无法填写表格,无论是手动还是通过 puppeteer。 -
这确实很旧,但我记得 chrome 团队明确阻止了在 mhtml 页面中运行内容脚本。他们说是为了安全?您是说现在您可以将内容脚本注入这些 mhtml 页面吗?你是从文件中加载这些吗?
-
在我的情况下略有不同,因为我正在使用 puppeteer (stackoverflow.com/q/61800030/4694994) 编写 e2e 测试;没有扩展。我通过在页面的每一帧上运行
eval来插入脚本,并将函数附加到window。尽管浏览器随后会记录不允许执行脚本,但它仍然可以工作。感谢您就这么老的话题回复我。 :-)
标签: google-chrome-extension content-script mhtml