我正在按照开发 WebExtension 的说明进行操作对于火狐浏览器。我让它适用于 HTML 页面。但是,我还希望我的脚本在请求的“页面”是图像时运行。这可能吗?
这是我所拥有的:
manifest.json:
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"applications": {
"gecko": {
"id": "alert@example.com",
"strict_min_version": "42.0",
"strict_max_version": "50.*",
"update_url": "https://example.com/updates.json"
}
},
"description": "Just does an alert.",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["alert.js"]
}
]
}
alert.js:
alert("ok");
按照说明安装插件后(转到“关于:调试”),我收到所有 HTML 页面的 JavaScript 警报。但是,如果我导航到图像(例如,右键单击图像并选择“查看图像”),则不会出现警报。
最佳答案
这是 Firefox 中的一个错误,在 Firefox 54(当前 Firefox Beta )中已大部分但未完全解决。您的脚本(大部分)在 Firefox Beta 和 Firefox Developer Edition 中按预期工作(从上下文菜单选择“查看图像”查看图像时显示警报) .
在使用 Beta 版和开发版进行测试时,我遇到的问题是,当使用前进和后退按钮导航离开和返回“查看图像”时,内容脚本间歇性未注入(inject)。 “页面。
可以确定您的内容脚本是使用 tabs.executeScript()
加载的,以及 webNavigation
中的事件, webRequest
和 tabs
蜜蜂。然而,对任何页面上的任何内容脚本执行此操作都是......复杂的(完整的通用实现需要的代码比 Stack Overflow 答案中允许的最大字符数还要多)。
WebExtensions 正在积极开发
WebExtensions API 仍在开发中。每个版本的 Firefox 的工作原理都有所改进。如果遇到问题,您应该使用 Firefox Developer Edition 测试您的 WebExtension 插件。 ,或Firefox Nightly 。您还应该仔细记下您想要使用的功能所需的 Firefox 版本。此信息包含在 MDN 文档页面的“浏览器兼容性”部分中。
关于javascript - Firefox 加载项可以针对非 HTML 请求(例如图像)运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146586/