从后台脚本强制关闭 chrome 扩展程序弹出窗口

Force close chrome extension popup from background script

所以我有一个后台脚本,我试图通过后台脚本以编程方式强制关闭扩展弹出窗口。

我试过

window.close();

这是行不通的,因为那必须 运行 来自扩展页面而不是后台脚本。

然后我尝试做

chrome.tabs.update({ active: true });

应该将焦点切换到当前选项卡,然后关闭扩展 window,但这似乎也不起作用。

有人有什么想法吗?

您可以使用chrome.extension.getViews关闭所有打开的弹出窗口:

chrome.extension.getViews({type: 'popup'}).forEach(v => v.close());

...或者只是焦点中的那个 window:

chrome.windows.getLastFocused(w => {
  chrome.extension.getViews({type: 'popup', windowId: w.id}).forEach(v => v.close());
});

或者,您可以使用 messaging 通过 chrome.runtime.sendMessage 发送类似 'closePopup' 的消息,以便弹出窗口接收它并在其 onMessage 处理程序中使用 window.close() 自行关闭.