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);

示例扩展