permissions.request()
请求给定 permissions.Permissions
对象中列出的权限集。
Permissions
参数可以包含 origins
属性(这是一个 主机权限 数组),或 permissions
属性(这是一个 API 权限 数组),或者两者都有。权限必须来自 optional_permissions
清单.json 键中定义的权限集。origins
属性可以包含与可选权限匹配的主机的子集匹配的权限:例如,如果 optional_permissions
包含 "*://mozilla.org/",则 permissions.origins
可以包含 "https://mdn.org.cn/"。
请求只能在 用户操作 的处理程序中进行。
根据具体情况,浏览器可能会通过询问用户是否授予请求的权限来处理请求。针对所有请求的权限只会发出一次请求:因此,要么所有权限都被授予,要么所有权限都不被授予。
授予的任何权限都将被扩展保留,即使在升级和禁用/启用循环期间也是如此。
这是一个返回 Promise
的异步函数。
语法
js
let requesting = browser.permissions.request(
permissions // Permissions object
)
参数
返回值
一个 Promise
,如果扩展现在被授予 permissions
参数中列出的所有权限,则以 true
为结果,否则以 false
为结果。
浏览器兼容性
BCD 表只在启用 JavaScript 的浏览器中加载。
示例
此代码添加了一个点击处理程序,该处理程序请求各种权限,然后在请求完成后记录请求的结果和扩展的权限。
js
const permissionsToRequest = {
permissions: ["bookmarks", "history"],
origins: ["https://mdn.org.cn/"],
};
async function requestPermissions() {
function onResponse(response) {
if (response) {
console.log("Permission was granted");
} else {
console.log("Permission was refused");
}
return browser.permissions.getAll();
}
const response = await browser.permissions.request(permissionsToRequest);
const currentPermissions = await onResponse(response);
console.log(`Current permissions:`, currentPermissions);
}
document
.querySelector("#request")
.addEventListener("click", requestPermissions);
示例扩展
注意:目前存在 请求来源的错误 和 在 about:addons 页面上请求权限的错误。
注意:此 API 基于 Chromium 的 chrome.permissions
API。