windows.getAll()

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

这是一个异步函数,返回一个 Promise

语法

js
let gettingAll = browser.windows.getAll(
  getInfo                // optional object
)

参数

getInfo 可选

object。此参数控制检索哪些 windows.Window 对象。

populate 可选

boolean。默认为 false。如果设置为 true,每个 windows.Window 对象将包含一个 tabs 属性,该属性是一个 tabs.Tab 对象数组,代表该窗口中的标签页。仅当扩展的 manifest 文件包含 "tabs" 权限或与标签页 URL 匹配的 主机权限 时,Tab 对象才会包含 urltitlefavIconUrl 属性。

windowTypes 可选

一个 windows.WindowType 对象数组。如果设置,则返回的 windows.Window 对象将根据其类型进行过滤。如果未设置,默认过滤器将设置为 ['normal', 'panel', 'popup'],其中 'panel' 窗口类型仅限于扩展自身窗口。

返回值

一个 Promise,它将以一个 windows.Window 对象数组的形式完成,代表所有符合给定条件的窗口。如果发生任何错误,Promise 将被拒绝并附带错误消息。

示例

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

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

function onError(error) {
  console.error(`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