runtime.getContexts()

返回有关扩展程序相关联的上下文的信息。

语法

js
let gettingContexts = await 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.getContexts({ incognito: true });
gettingContextInfo.then(gotContextInfo);

浏览器兼容性