权限
允许扩展在运行时请求额外的权限,即在它们安装后。
扩展需要权限才能访问功能更强大的 Web 扩展 API。它们可以在安装时通过在 permissions
manifest.json 键中包含其所需的权限来请求权限。在安装时请求权限的主要优点是
- 只询问用户一次,因此对他们来说干扰更少,决策也更简单。
- 扩展可以依赖于它所需的 API 访问权限,因为如果它已经在运行,则权限已被授予。
在大多数主要浏览器中,用户可以通过浏览器的扩展管理器查看其安装的扩展是否请求高级权限。
使用权限 API,扩展可以在运行时请求额外权限。这些权限需要列在 optional_permissions
manifest.json 键中。请注意,某些权限不允许在 optional_permissions
中使用。这样做主要有以下优点
- 扩展可以在不需要权限时仅使用一小部分权限运行。
- 扩展可以以一种优雅的方式处理权限拒绝,而不是在安装时向用户展示全局的“全部或无”选择。例如,您仍然可以从该地图扩展中获得很多内容,而无需授予其访问您位置的权限。
- 扩展可能需要 主机权限,但可能在安装时不知道它需要哪些主机权限。例如,主机列表可能是用户设置。在这种情况下,在运行时请求更具体的范围主机,可以替代在安装时请求“<all_urls>”。
要使用权限 API,请确定您的扩展可以在运行时请求哪些权限,并将它们列在 optional_permissions
中。在此之后,您可以请求包含在 optional_permissions
中的任何权限。请求只能在用户操作的处理程序中进行(例如,点击处理程序)。
从 Firefox 84 开始,用户将能够从附加组件管理器中管理已安装扩展的可选权限。使用可选权限的扩展应监听 browser.permissions.onAdded 和 browser.permissions.onRemoved API 事件,以便了解何时用户授予或撤销这些权限。
有关设计运行时权限请求的建议,以最大程度地提高用户授予权限的可能性,请参阅 运行时请求权限。
类型
permissions.Permissions
-
表示一组权限。
方法
permissions.contains()
-
发现扩展的给定权限集。
permissions.getAll()
-
获取此扩展当前拥有的所有权限。
permissions.remove()
-
放弃一组权限。
permissions.request()
-
请求一组权限。
事件处理程序
permissions.onAdded
-
授予新权限时触发。
permissions.onRemoved
-
删除权限时触发。
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
manifest.json
permissions
属性manifest.json
optional_permissions
属性
示例扩展
注意: 此 API 基于 Chromium 的 chrome.permissions
API。