Skip to main content

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

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

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

概念和用法

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

(which causes problems if the user denied the initial permission request).

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不支持3016
accelerometer 权限6279不支持不支持49不支持
accessibility-events 权限6279不支持不支持49不支持
ambient-light-sensor 权限6279不支持不支持49不支持
background-sync 权限6279不支持不支持49不支持
camera 权限6479不支持不支持51不支持
clipboard-read 权限6479不支持不支持51不支持
clipboard-write 权限6479不支持不支持51不支持
geolocation 权限437946不支持30不支持
gyroscope 权限5179不支持不支持38不支持
magnetometer 权限6279不支持不支持49不支持
microphone 权限6479不支持不支持51不支持
midi 权限4379不支持不支持30不支持
notifications 权限437946不支持30不支持
payment-handler 权限6679不支持不支持53不支持
persistent-storage 权限717953不支持58不支持
push 权限437946不支持30不支持
query437946不支持3016
request4679不支持不支持33不支持
requestAll4879不支持不支持35不支持
revoke4679

51

47 — 51

不支持33不支持
speaker-selection 权限不支持不支持92不支持不支持不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持不支持143未知46未知3016
accelerometer 权限不支持62未知不支持未知46不支持
accessibility-events 权限不支持62未知不支持未知46不支持
ambient-light-sensor 权限不支持62未知不支持未知46不支持
background-sync 权限不支持62未知不支持未知46不支持
camera 权限不支持64未知不支持未知47不支持
clipboard-read 权限不支持64未知不支持未知47不支持
clipboard-write 权限不支持64未知不支持未知47不支持
geolocation 权限不支持43未知46未知30不支持
gyroscope 权限不支持51未知不支持未知41不支持
magnetometer 权限不支持62未知不支持未知46不支持
microphone 权限不支持64未知不支持未知47不支持
midi 权限不支持43未知不支持未知30不支持
notifications 权限不支持43未知46未知30不支持
payment-handler 权限不支持66未知不支持未知47不支持
persistent-storage 权限不支持71未知53未知50不支持
push 权限不支持43未知46未知30不支持
query不支持43未知46未知3016
request不支持46未知不支持未知不支持不支持
requestAll不支持48未知不支持未知不支持不支持
revoke不支持46未知47 — 51未知不支持不支持
speaker-selection 权限不支持不支持未知92未知不支持不支持

1. See bug 490120.

相关链接