如何使用 Manifest v3 要求在 Firefox 中启用权限?

Den*_*er1 8 firefox firefox-addon manifest.json chrome-extension-manifest-v3

截至 1 月 17 日,Firefox 现已在Firefox 109.0中支持 Manifest v3 。

我正在使用 Manifest v3 测试一个附加组件,它需要访问 reddit.com 上的变量。

我想设置“访问 *://reddit.com 域中网站的数据”权限因为如果没有它,扩展程序将无法工作。

需要做什么才能使它不显示为可选,因为我希望用户不必从“权限”选项卡显式打开权限?

在此输入图像描述

我希望它按要求显示,类似于此图片(来源):

在此输入图像描述

下面是示例清单文件的精简版本,其中将权限显示为可选。

{
    "manifest_version": 3,
    "name": "Example",
    "description": "Example",
    "version": "3.16.1",
    "content_scripts": [
        {
            "run_at": "document_idle",
            "matches": ["*://*.reddit.com/"],
            "js": ["script.js"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加"permissions": ["https://*.reddit.com/*"],但它仍然显示为可选。

我也尝试过"permissions": ["*://reddit.com"]"host_permissions": ["*://reddit.com"]但没有什么导致需要它。

我有一个 Chrome 扩展程序,它使用相同的清单 v3 文件。

Dar*_*ont 2

我找到的唯一解决方案是设置可选权限。 https://developer.chrome.com/docs/extensions/reference/permissions/

我将权限设置本身添加到侦听器中。当然,我事先检查此类权限是否尚不存在。

    browser.action.onClicked.addListener((tab: Tab) => {
      browser.permissions.request({
        origins: ['*://*.reddit.com/']
      })
    });
Run Code Online (Sandbox Code Playgroud)