permissions.contains()

检查扩展是否具有在给定的 permissions.Permissions 对象中列出的权限。

Permissions 参数可以包含一个 origins 属性(一个 主机权限 数组)或一个 permissions 属性(一个 API 权限 数组),或者两者都包含。

这是一个异步函数,返回一个 Promise。如果扩展具有所有指定的权限,则 Promise 解析为 true。对于主机权限,如果扩展的权限 模式匹配 origins 中列出的权限,则认为它们匹配。

语法

js
let getContains = browser.permissions.contains(
  permissions                // Permissions object
)

参数

permissions

一个 permissions.Permissions 对象。

返回值

一个 Promise,如果扩展已拥有 permissions 参数中列出的所有权限,则会解析为 true,否则解析为 false

示例

js
// Extension permissions are:
// "webRequest", "tabs", "*://*.mozilla.org/*"

let testPermissions1 = {
  origins: ["*://mozilla.org/"],
  permissions: ["tabs"],
};

const testResult1 = await browser.permissions.contains(testPermissions1);
console.log(testResult1); // true

let testPermissions2 = {
  origins: ["*://mozilla.org/"],
  permissions: ["tabs", "alarms"],
};

const testResult2 = await browser.permissions.contains(testPermissions2);
console.log(testResult2); // false, "alarms" doesn't match

let testPermissions3 = {
  origins: ["https://mdn.org.cn/"],
  permissions: ["tabs", "webRequest"],
};

const testResult3 = await browser.permissions.contains(testPermissions3);
console.log(testResult3); // true: "https://mdn.org.cn/", matches: "*://*.mozilla.org/*"

let testPermissions4 = {
  origins: ["https://example.org/"],
};

const testResult4 = await browser.permissions.contains(testPermissions4);
console.log(testResult4); // false: "https://example.org/", `origins` doesn't match

扩展程序示例

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.permissions API。