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