windows.getAll()

获取所有打开的窗口的信息,并将它们传递给一个回调函数。

这是一个返回 Promise 的异步函数。

语法

js
let gettingAll = browser.windows.getAll(
  getInfo                // 可选对象
)

参数

getInfo 可选

object。这将决定获取哪些 windows.Window 对象。

populate 可选

boolean。默认为 false。如果设置为 true,每个 windows.Window 对象将有一个 tabs 属性,其中包含表示该窗口中的标签页的 tabs.Tab 对象的列表。只有当扩展的清单文件包含 "tabs" 权限或与标签页的 URL 匹配的主机权限Tab 对象才会包含 urltitlefavIconUrl 属性。

windowTypes 可选

windows.WindowType 对象的数组(array)。如果给出该参数,则将基于该参数对窗口类型进行筛选返回的 windows.Window 对象。如果未设置,则默认筛选器取 ['normal', 'panel', 'popup'],其中 'panel' 窗口类型仅限于扩展自己的窗口。

返回值

一个 Promise,其会兑现为一个包含所有符合给定条件的 windows.Window 对象的数组。如果发生任何错误则该 Promise 将以错误消息拒绝。

浏览器兼容性

BCD tables only load in the browser

示例

记录所有“正常”浏览器窗口中的标签页的 URL。请注意,你需要 "tabs" 权限或匹配的主机权限才能访问标签页的 URL。

js
function logTabsForWindows(windowInfoArray) {
  for (const windowInfo of windowInfoArray) {
    console.log(`窗口:${windowInfo.id}`);
    console.log(windowInfo.tabs.map((tab) => tab.url));
  }
}

function onError(error) {
  console.error(`发生错误:${error}`);
}

browser.browserAction.onClicked.addListener((tab) => {
  browser.windows
    .getAll({
      populate: true,
      windowTypes: ["normal"],
    })
    .then(logTabsForWindows, onError);
});

示例扩展

备注: 此 API 基于 Chromium 的 chrome.windows API。该文档衍生自 Chromium 代码中的 windows.json