permissions.request()

詢問使用者是否授予 permissions.Permissions 物件中列出的許可權。

Permissions 引數可以包含一個 origins 屬性(一個 主機許可權 陣列)、一個 permissions 屬性(一個 API 許可權 陣列),或者兩者都包含。

請求的許可權必須在 optional_permissions manifest.json 鍵中定義。origins 屬性可以包含與可選許可權匹配的主機子集的許可權。例如,如果 optional_permissions 包含 "*://mozilla.org/",則 permissions.origins 可以包含 "https://mdn.club.tw/"

僅可選許可權 的請求不能包含任何其他可選許可權。

該請求只能在 使用者操作 的處理程式中進行。除非所有請求的許可權都已靜默授予,否則瀏覽器會詢問使用者是否授予請求的許可權。所有請求的許可權將作為一個整體進行處理:要麼全部授予,要麼都不授予。

擴充套件會保留任何已授予的許可權,即使在升級、停用和重新啟用週期中也是如此。

這是一個非同步函式,返回一個 Promise

語法

js
let requesting = browser.permissions.request(
  permissions                // Permissions object
)

引數

permissions

一個 permissions.Permissions 物件。

返回值

一個 Promise,如果擴充套件被授予 permissions 引數中列出的許可權,則該 Promise fulfilled 為 true;否則為 false

示例

此程式碼添加了一個點選處理程式,該處理程式請求各種許可權,然後在請求完成後記錄請求結果以及擴充套件的許可權。

js
const permissionsToRequest = {
  permissions: ["bookmarks", "history"],
  origins: ["https://mdn.club.tw/"],
};

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。