此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

permissions.contains()

判断扩展是否有给定 permissions.Permissions 对象中列出的权限。

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

这是一个返回 Promise 的异步函数。如果扩展已经有了指定的权限,那么 promise 会兑现为 true。对于主机权限,如果扩展的权限模式匹配 origins 中列出的权限,那么它们被认为是匹配的。

语法

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

参数

permissions

permissions.Permissions 对象。

返回值

一个 Promise,如果扩展已经取得 permissions 参数中列出的所有权限则将兑现为 true,否则兑现为 false

浏览器兼容性

示例

js
// 扩展已取得的权限:
// “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”权限不匹配

let testPermissions3 = {
  origins: ["https://newreal1.mobosoft.fun/"],
  permissions: ["tabs", "webRequest"],
};

const testResult3 = await browser.permissions.contains(testPermissions3);
console.log(testResult3); // true:“https://newreal1.mobosoft.fun/”与“*://*.mozilla.org/*”相匹配

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

const testResult4 = await browser.permissions.contains(testPermissions4);
console.log(testResult4); // false:`origins` 的“https://example.org/”并不匹配

示例扩展

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