permissions

允许扩展在安装后运行时请求额外的权限。

扩展需要权限才能访问更强大的 WebExtension API。它们可以在安装时请求权限,方法是将所需的权限包含在 permissions manifest.json 键中。在安装时请求权限的主要优点是:

  • 用户只需被询问一次,对他们来说干扰更少,决策也更简单。
  • 扩展可以依赖于对其所需 API 的访问,因为如果已经运行,权限已被授予。

在大多数主流浏览器中,用户可以通过浏览器的扩展管理器查看其已安装的扩展是否请求了高级权限。

使用 permissions API,扩展可以在运行时请求其他权限。这些权限需要列在 optional_permissions manifest.json 键中。请注意,某些权限不允许在 optional_permissions 中。这样做的主要优点是:

  • 扩展可以在权限集较小的情况下运行,除非实际需要。
  • 扩展可以以一种优雅的方式处理权限拒绝,而不是在安装时向用户呈现一个全局的“全有或全无”的选择。例如,即使不授予访问您位置的权限,您仍然可以从地图扩展中获得很多功能。
  • 扩展可能需要 host permissions,但在安装时可能不知道需要哪些 host permissions。例如,主机列表可能是用户设置。在这种情况下,在运行时请求更具体的主机范围,可以作为在安装时请求 "<all_urls>" 的替代方案。

要使用 permissions API,请决定您的扩展可以在运行时请求哪些权限,并将它们列在 optional_permissions 中。之后,您可以请求已包含在 optional_permissions 中的任何权限。请求只能在用户操作的处理程序中进行(例如,点击处理程序)。

从 Firefox 84 开始,用户将能够从附加组件管理器管理已安装扩展的可选权限。使用可选权限的扩展应监听 browser.permissions.onAddedbrowser.permissions.onRemoved API 事件,以了解用户何时授予或撤销这些权限。

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

类型

permissions.Permissions

表示一组权限。

方法

permissions.contains()

发现扩展已授予的权限集。

permissions.getAll()

获取此扩展当前拥有的所有权限。

permissions.remove()

放弃一组权限。

permissions.request()

请求一组权限。

事件处理器

permissions.onAdded

当授予新权限时触发。

permissions.onRemoved

当移除权限时触发。

扩展程序示例

浏览器兼容性

另见

注意:此 API 基于 Chromium 的 chrome.permissions API。