optional_permissions

类型 Array
必填
Manifest 版本 2 或更高
示例
json
"optional_permissions": [
  "webRequest"
]

使用 optional_permissions 键来列出您希望在扩展程序安装后,在运行时请求的权限。

permissions 键列出了您的扩展程序在安装前需要的所有权限。相比之下,optional_permissions 列出了您的扩展程序在安装时不需要,但在安装后可以请求的权限。要请求权限,请使用 permissions.request() API。请求权限会向用户显示一个对话框,要求他们授予您的扩展程序该权限,除非所有请求的权限都已静默授予。

关于如何设计运行时权限请求以最大化用户授予权限的可能性,请参阅 在运行时请求权限

从 Firefox 84 开始,用户可以在 Firefox 附加组件管理器中管理可选权限。使用可选权限的扩展程序可以通过 permissions.getAll() 检查用户授予的权限,并监听 permissions.onAddedpermissions.onRemoved 来了解用户何时授予或撤销权限。

该键可以包含主机权限和 API 权限。

主机权限

这些与您可以在 permissions 键中指定的权限相同。

注意:在使用 Manifest V3 或更高版本时,可选的主机权限应使用 optional_host_permissions manifest 键指定。Firefox 在 128 版中引入了 optional_host_permissions,请参阅 bug 1766026,并允许继续使用 optional_permissions 指定可选主机。但建议使用 optional_host_permissions

API 权限

可选的 API 权限有

  • activeTab
  • background
  • bookmarks
  • browserSettings
  • browsingData
  • clipboardRead
  • clipboardWrite
  • contentSettings
  • contextMenus
  • cookies
  • debugger
  • declarativeNetRequest
  • declarativeNetRequestFeedback
  • declarativeNetRequestWithHostAccess
  • devtools
  • downloads
  • downloads.open
  • find
  • geolocation
  • history
  • idle
  • management
  • nativeMessaging
  • notifications
  • pageCapture
  • pkcs11
  • privacy
  • proxy
  • scripting
  • search
  • sessions
  • tabHide
  • tabGroups
  • tabs
  • topSites
  • 'userScripts' (仅限可选)
  • webNavigation
  • webRequest
  • webRequestBlocking
  • webRequestFilterResponse
  • webRequestFilterResponse.serviceWorkerScript

请查看兼容性表以获取浏览器特定的支持详细信息。

这些可选权限会静默授予,无需用户确认。

  • activeTab
  • cookies
  • idle
  • tabGroups
  • webRequest
  • webRequestBlocking
  • webRequestFilterResponse
  • webRequestFilterResponse.serviceWorkerScript

仅限可选权限

通常,可选权限可以在 permissions 键中使用,因此可以要求在安装时授予。但是,某些浏览器支持“仅限可选权限”的概念,即只能在运行时请求的权限。例如,在 Firefox 中,用户可以通过 扩展程序的选项页面 或使用 permissions.request() 来授予仅限可选的权限。仅限可选的权限必须通过 permissions.request() API 单独且独立地请求。

仅限可选的 API 权限有

示例

json
 "optional_permissions": ["*://mdn.org.cn/*"]

仅限 Manifest V2,使扩展程序能够请求对 developer.mozilla.org 下页面的特权访问。

json
  "optional_permissions": ["tabs"]

使扩展程序能够请求访问 tabs API 的特权部分。

json
  "optional_permissions": ["*://mdn.org.cn/*", "tabs"]

仅限 Manifest V2,使扩展程序能够请求上述两个权限。

浏览器兼容性