权限 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 的非详尽列表包括
- 后台同步 API:
background-sync
(应始终授予) - 计算压力 API:
compute-pressure
- 地理位置 API:
geolocation
- 本地字体访问 API:
local-fonts
- 媒体捕获和流 API:
microphone
、camera
- 通知 API:
notifications
- 支付处理程序 API:
payment-handler
- 推送 API:
push
- 屏幕唤醒锁定 API:
screen-wake-lock
- 传感器 API:
accelerometer
、gyroscope
、magnetometer
、ambient-light-sensor
- 存储访问 API:
storage-access
、top-level-storage-access
- 存储 API:
persistent-storage
- Web MIDI API:
midi
- 窗口管理 API:
window-management
示例
我们创建了一个名为“位置查找器”的简单示例。您可以在线运行此示例,或在 GitHub 上查看源代码。
在我们的文章使用权限 API中阅读有关其工作原理的更多信息。
接口
权限
-
提供核心权限 API 功能,例如查询和撤销权限的方法。
PermissionStatus
-
提供对权限当前状态的访问,以及用于响应权限状态更改的事件处理程序。
对其他接口的扩展
-
分别提供对来自主上下文和工作线程上下文的
Permissions
对象的访问。
规范
规范 |
---|
权限 |
浏览器兼容性
api.Permissions
BCD 表格仅在浏览器中加载
api.Navigator.permissions
BCD 表格仅在浏览器中加载
api.WorkerNavigator.permissions
BCD 表格仅在浏览器中加载