从后台脚本强制关闭 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() 自行关闭.
所以我有一个后台脚本,我试图通过后台脚本以编程方式强制关闭扩展弹出窗口。
我试过
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() 自行关闭.