permissions.request()
询问用户是否授予 permissions.Permissions 对象中列出的权限。
Permissions 参数可以包含一个 origins 属性(一个 主机权限 数组)、一个 permissions 属性(一个 API 权限 数组),或者两者都包含。
请求的权限必须在 optional_permissions manifest.json 键中定义。origins 属性可以包含与可选权限匹配的主机子集的权限。例如,如果 optional_permissions 包含 "*://mozilla.org/",则 permissions.origins 可以包含 "https://mdn.org.cn/"。
对 仅可选权限 的请求不能包含任何其他可选权限。
该请求只能在 用户操作 的处理程序中进行。除非所有请求的权限都已静默授予,否则浏览器会询问用户是否授予请求的权限。所有请求的权限将作为一个整体进行处理:要么全部授予,要么都不授予。
扩展会保留任何已授予的权限,即使在升级、禁用和重新启用周期中也是如此。
这是一个异步函数,返回一个 Promise。
语法
js
let requesting = browser.permissions.request(
permissions // Permissions object
)
参数
返回值
一个 Promise,如果扩展被授予 permissions 参数中列出的权限,则该 Promise fulfilled 为 true;否则为 false。
示例
此代码添加了一个点击处理程序,该处理程序请求各种权限,然后在请求完成后记录请求结果以及扩展的权限。
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);
扩展程序示例
浏览器兼容性
加载中…
注意:此 API 基于 Chromium 的 chrome.permissions API。