Permissions API - 查询当前上下文的 API 权限的状态

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

注意:此功能在 Web Workers 中可用(虽然不是当前版本的 Firefox,因为 WorkerNavigator.permissions 没有实现)。

概念和用法

历史上,不同的 API 处理自己的权限不一致 —— 例如,Notifications API 允许显式检查权限状态和请求权限,而 Geolocation API 没有(如果用户拒绝首次权限请求,则会缓存起来)。权限 API 提供的工具允许开发人员在权限方面实现更好的用户体验。

permissions 属性已在 Navigator 对象上可用,无论是在标准浏览上下文还是工作线程上下文 (WorkerNavigator - 因此权限检查在工作线程内可用),并返回一个 Permissions 对象,该对象提供对权限 API 功能的访问。

拥有此对象后,您就可以执行与权限相关的任务,例如使用 Permissions.query() 方法查询权限以返回使用 PermissionStatus 用于特定的 API。

并非所有 API 的权限状态都可以使用 Permissions API 进行查询。可以使用权限功能的知名 API 包括:

随着时间的推移,更多 API 将可以通过 Permissions API 调用。

实例

我们提供了一个名为 Location Finder 的简单实例。您可以实时运行示例,或在 Github 上查看源代码

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

接口

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

Permissions

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

PermissionStatus

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

规范

规范
Permissions

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持437946 不支持 支持 不支持
accelerometer 权限6279 未知 不支持 未知 不支持
accessibility-events 权限6279 未知 不支持 未知 不支持
ambient-light-sensor 权限6279 未知 不支持 未知 不支持
background-sync 权限6279 未知 不支持 未知 不支持
camera 权限6479 未知 不支持 未知 不支持
clipboard-read 权限6479 不支持 不支持 未知 不支持
clipboard-write 权限6479 不支持 不支持 未知 不支持
geolocation 权限4379 未知 不支持30 不支持
gyroscope 权限5179 未知 不支持 未知 不支持
magnetometer 权限6279 未知 不支持 未知 不支持
microphone 权限6479 未知 不支持 未知 不支持
midi 权限4379 未知 不支持30 不支持
notifications 权限4379 未知 不支持30 不支持
payment-handler 权限6679 未知 不支持 未知 不支持
persistent-storage 权限717953 不支持58 不支持
push 权限4379 未知 不支持30 不支持
query437946 不支持 支持 不支持
request4679 不支持 不支持 未知 不支持
requestAll4879 不支持 不支持 未知 不支持
revoke4679

51

47 — 51

不支持 未知 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持4343 未知46 未知 支持 不支持
accelerometer 权限6262 未知 未知 未知 未知 不支持
accessibility-events 权限6262 未知 未知 未知 未知 不支持
ambient-light-sensor 权限6262 未知 未知 未知 未知 不支持
background-sync 权限6262 未知 未知 未知 未知 不支持
camera 权限6464 未知 未知 未知 未知 不支持
clipboard-read 权限6464 未知 不支持 未知 未知 不支持
clipboard-write 权限6464 未知 不支持 未知 未知 不支持
geolocation 权限 不支持43 未知 未知 未知30 不支持
gyroscope 权限5151 未知 未知 未知 未知 不支持
magnetometer 权限6262 未知 未知 未知 未知 不支持
microphone 权限6464 未知 未知 未知 未知 不支持
midi 权限 不支持43 未知 未知 未知30 不支持
notifications 权限 不支持43 未知 未知 未知30 不支持
payment-handler 权限6666 未知 未知 未知 未知 不支持
persistent-storage 权限7171 未知53 未知50 不支持
push 权限 不支持43 未知 未知 未知30 不支持
query4343 未知46 未知 支持 不支持
request4646 未知 不支持 未知 未知 不支持
requestAll4848 未知 不支持 未知 未知 不支持
revoke4646 未知

51

47 — 51

未知 未知 不支持

相关链接