权限 API

备注: 此特性在 Web Worker 中可用。

权限 API(Permissions API)提供一致的编程方式来查询归因于当前上下文的 API 权限的状态。例如,权限 API 可用于确定是否已授予或拒绝访问特定 API 的权限,或者是否需要特定的用户权限。

请注意,此 API 的权限有效地聚合了上下文的所有安全限制,包括在安全上下文中使用 API 的任何要求,Permissions-Policy 应用于文档的限制以及用户提示。因此,例如,如果 API 受到权限策略的限制,则返回的权限将被“拒绝”,并且不会提示用户访问。

概念和用法

历史上不同的 API 对自己的权限的处理方式不一致——例如,Notifications API 提供了自己的方法来请求权限和检查权限状态,而 Geolocation API 没有。权限 API 提供的工具允许开发者在使用权限时实现一致且更好的用户体验。

permissions 属性已在标准浏览上下文和 worker 上下文(WorkerNavigator ——因此可以在 worker 内部进行权限检查)中的 Navigator 对象上可用,并返回一个提供对权限 API 功能的访问的 Permissions 对象。

获得此对象后,你可以使用 Permissions.query() 方法返回一个 promise,该 promise 为特定的 API 解析 PermissionStatus 对象。请注意,如果状态为 prompt,则用户必须在访问该功能之前确认提示,并且启动此提示的机制将取决于特定的 API——它并未定义为权限 API 的一部分。

权限相关的 API

并非所有 API 的权限状态都可以通过权限 API 查询。权限相关的 API 的非详尽列表包括:

示例

我们创建了一个名为 Location Finder 的简单示例。你可以实时运行示例,或在 GitHub 上查看源代码

有关其工作原理的更多信息,请阅读我们的文章使用权限 API

接口

Permissions

提供核心权限 API 功能,例如查询和撤销权限的方法。

PermissionStatus

提供对权限当前状态的访问,以及响应权限状态更改的事件处理器。

对其他接口的扩展

分别用于访问主上下文和 worker 上下文的 Permissions 对象。

规范

Specification
Permissions

浏览器兼容性

api.Permissions

BCD tables only load in the browser

api.Navigator.permissions

BCD tables only load in the browser

api.WorkerNavigator.permissions

BCD tables only load in the browser

参见