javascript - Firefox 加载项可以针对非 HTML 请求(例如图像)运行吗?

标签 javascript firefox-addon firefox-addon-webextensions

我正在按照开发 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 中的事件, webRequesttabs蜜蜂。然而,对任何页面上的任何内容脚本执行此操作都是......复杂的(完整的通用实现需要的代码比 Stack Overflow 答案中允许的最大字符数还要多)。

WebExtensions 正在积极开发

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

关于javascript - Firefox 加载项可以针对非 HTML 请求(例如图像)运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146586/

相关文章:

javascript - Visual Composer在表格前后添加了</p><p>,如何删除?

javascript - 如何在 Ajax POST 提交后允许页面刷新/重定向(Django 形式)

javascript - 使用flask加载js中的目录

javascript - XMLHttpRequest 未接收到数据或仅接收到 "undefined"

javascript - 如何将值传递给扩展窗口的文本字段? (Firefox 网络扩展)

css - 从我的笔记本电脑将自定义 CSS(持续)应用到我经常查看的网站?

php - 如何在不使用 Canvas 的情况下将整个 div 数据转换为图像并将其保存到目录中?

javascript - 浏览器扩展可以覆盖 CSS 媒体功能/查询吗?

Firefox 中的 jQuery 扩展

javascript - 如何在弹出窗口关闭后保持扩展脚本运行?