Firefox加载项可以针对图像等非HTML请求运行吗



我正在按照说明为Firefox开发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");

按照说明安装插件后(转到"about:debugging"),我会收到所有HTML页面的JavaScript警报。但是,如果我导航到图像(例如,右键单击图像并选择"查看图像"),则不会出现警报。

这是Firefox中的一个错误,在Firefox 54(目前为Firefox Beta)中大部分但未完全解决。您的脚本(大部分)在Firefox Beta和Firefox Developer Edition中按预期工作(从上下文菜单选择"查看图像"查看图像时显示警报)。

在测试Beta和Developer Edition时,我遇到的问题是,当使用前进和后退按钮导航离开和返回";查看图像";页

可以确定您的内容脚本是使用tabs.executeScript()以及来自webNavigationwebRequesttabsAPI的事件加载的。然而,对于任何页面上的任何内容脚本,这样做都是……复杂的(一个完整的通用实现所需的代码超过了堆栈溢出答案中允许的最大字符数)。

WebExtensions正在积极开发中

WebExtensions API仍在开发中。每一个版本的Firefox都能改进工作原理。如果遇到问题,您应该使用Firefox Developer Edition或Firefox Nightly测试WebExtension插件。您还应该仔细注意您想要使用的功能所需的Firefox版本。该信息包含在";浏览器兼容性";MDN文档页面的部分。

最新更新