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
对象才会包含url
、title
和favIconUrl
属性。 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
。