runtime.getContexts()

返回有关与扩展关联的上下文的資訊。

语法

js
let gettingContexts = browser.runtime.getContexts(
    filter           // object
);

参数

filter

一个对象,包含与返回的上下文匹配的标准。匹配的上下文必须匹配所有指定的过滤器。如果对象为空,则返回所有上下文。

contextIds 可选

一个 string 数组。要返回的上下文的 ID。

contextTypes 可选

一个 string 数组。与要返回的上下文关联的扩展视图类型。取值 "BACKGROUND""POPUP""SIDE_PANEL""TAB"

documentIds 可选

一个 string 数组。与要返回的上下文关联的文档的 UUID。

documentOrigins 可选

一个 string 数组。与要返回的上下文关联的文档的来源。

documentUrls 可选

一个 string 数组。与要返回的上下文关联的文档的 URL。

frameIds 可选

一个 integer 数组。要返回的上下文的框架 ID。

incognito 可选

boolean。是否仅返回托管在隐身浏览标签中的上下文。

tabIds 可选

一个 integer 数组。要返回的上下文的选项卡 ID。

windowIds 可选

一个 integer 数组。要返回的上下文的窗口 ID。

返回值

一个 Promise,它将使用一个对象数组来实现,每个对象对应一个托管扩展内容的上下文。这些对象具有以下属性

contextId

string。上下文的 ID。

contextType

string。扩展视图的类型。返回 "BACKGROUND""POPUP""SIDE_PANEL""TAB" 之一。

documentId

string。与上下文关联的文档的 UUID,如果上下文未托管在文档中,则为 undefined。

documentOrigin

string`。与上下文关联的文档的来源,如果上下文未托管在文档中,则为 undefined。

documentUrl

string。与上下文关联的文档的 URL,如果上下文未托管在文档中,则为 undefined。

frameId

integer。上下文的框架 ID,如果上下文未托管在框架中,则为 -1

incognito

boolean。上下文是否托管在隐身浏览标签中。

tabId

integer。上下文的选项卡 ID,如果上下文未托管在选项卡中,则为 -1

windowId

integer。上下文的窗口 ID,如果上下文未托管在窗口中,则为 -1

如果没有匹配的上下文,则使用空数组来实现。

示例

此示例获取与扩展关联的所有上下文,这些上下文托管在隐身浏览标签中,将每个上下文的选项卡 ID、框架 ID 和文档 URL 打印到控制台

js
function gotContextInfo(contexts) {
  for (const context of contexts) {
    if (context.tabId == -1) {
      console.log("Not hosted in a tab");
    } else {
      console.log(
        `Hosted in tab: ${context.tabId} and frame ${context.frameId} with URL ${context.documentUrl}`,
      );
    }
  }
}

let gettingContextInfo = browser.runtime.getContext({ incognito: true });
gettingContextInfo.then(gotContextInfo);

浏览器兼容性

BCD 表仅在启用了 JavaScript 的浏览器中加载。