windows.getCurrent()

获取当前浏览器窗口,并将其详细信息传递给回调函数。

“当前”窗口不一定等同于当前焦点所在的窗口。如果此函数是从后台脚本调用的,则它返回当前焦点所在的窗口。但如果它是由与特定浏览器窗口关联的文档的脚本调用的,则它返回该浏览器窗口。例如,如果浏览器正在显示侧边栏,则每个浏览器窗口都有其自己的侧边栏文档实例。如果侧边栏文档中运行的脚本调用 getCurrent(),它将返回该侧边栏文档的窗口。

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

语法

js
let gettingCurrent = browser.windows.getCurrent(
  getInfo               // optional object
)

参数

getInfo 可选

object.

populate 可选

boolean。如果为 true,则 windows.Window 对象将具有一个 tabs 属性,其中包含一个 tabs.Tab 对象数组,表示窗口中的标签页。只有当扩展的 manifest 文件包含 "tabs" 权限或匹配标签页 URL 的 host 权限时,Tab 对象才包含 urltitlefavIconUrl 属性。

windowTypes 已弃用 可选

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

注意:如果提供了 windowTypes,则 getInfowindowTypes 组件将被忽略。自 Firefox 62 起,windowTypes 已被弃用。

返回值

一个 Promise,它将以一个 windows.Window 对象(包含窗口的详细信息)来兑现。如果发生任何错误,Promise 将以错误消息拒绝。

示例

当用户点击浏览器操作的图标时,此示例会获取当前窗口并记录其中包含的标签页的 URL。请注意,您需要 "tabs" 权限或匹配的 host 权限才能访问标签页 URL。

js
function logTabs(windowInfo) {
  for (const tabInfo of windowInfo.tabs) {
    console.log(tabInfo.url);
  }
}

function onError(error) {
  console.error(`Error: ${error}`);
}

browser.browserAction.onClicked.addListener((tab) => {
  browser.windows.getCurrent({ populate: true }).then(logTabs, onError);
});

扩展程序示例

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.windows API。本文档源自 Chromium 代码中的 windows.json