windows.remove()

关闭给定 ID 的窗口及其所包含的所有标签页。

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

语法

js
let removing = browser.windows.remove(
  windowId        // 整型
)

参数

windowId

integer。要关闭的窗口的 ID。

返回值

一个 Promise,当窗口已关闭时将不带参数地兑现。如果发生任何错误,则该 promise 将以错误消息拒绝。

浏览器兼容性

BCD tables only load in the browser

示例

当用户点击浏览器操作的图标时,关闭点击图标所在的窗口:

js
function onRemoved() {
  console.log(`窗口已关闭`);
}

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

browser.browserAction.onClicked.addListener((tab) => {
  let removing = browser.windows.remove(tab.windowId);
  removing.then(onRemoved, onError);
});

当用户点击页面上的按钮时,关闭当前窗口(例如弹出窗口):

js
// 在窗口中的页面加载的脚本中
document.querySelector("#close").addEventListener(async ({ button }) => {
  try {
    if (button) return; // 不是鼠标左键单击
    const windowId = (await browser.windows.getCurrent()).id;
    await browser.windows.remove(windowId);
    // 因为窗口已被关闭,代码将不会执行到此处
  } catch (error) {
    console.error("无法关闭:", error);
  }
});

在 Firefox 中,你可以通过 .allowScriptsToClose 窗口创建属性和 window.close() 来实现相同的效果。

示例扩展

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