权限 API

注意:此功能在Web Workers中可用。

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

请注意,此 API 中的权限有效地汇总了上下文的全部安全限制,包括任何 API 在安全上下文中使用的要求、应用于文档的Permissions-Policy限制以及用户提示。因此,例如,如果 API 受权限策略限制,则返回的权限将为denied,并且不会提示用户进行访问。

概念和用法

历史上,不同的 API 以不一致的方式处理其自身的权限——例如通知 API提供了自己的方法来请求权限和检查权限状态,而地理位置 API则没有。权限 API 提供了工具,使开发人员能够为处理权限实现一致且更好的用户体验。

permissions属性已在Navigator对象上可用,在标准浏览器上下文和工作线程上下文(WorkerNavigator——因此权限检查在工作线程中可用)中均可用,并返回一个Permissions对象,该对象提供了对权限 API 功能的访问。

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

支持权限的 API

并非所有 API 的权限状态都可以使用权限 API 查询。支持权限的 API 的非详尽列表包括

示例

我们创建了一个名为“位置查找器”的简单示例。您可以在线运行此示例,或在 GitHub 上查看源代码

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

接口

权限

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

PermissionStatus

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

对其他接口的扩展

分别提供对来自主上下文和工作线程上下文的Permissions对象的访问。

规范

规范
权限

浏览器兼容性

api.Permissions

BCD 表格仅在浏览器中加载

api.Navigator.permissions

BCD 表格仅在浏览器中加载

api.WorkerNavigator.permissions

BCD 表格仅在浏览器中加载

另请参阅