在我的扩展程序中,我想打开一些带有“第三方” URL的窗口,即不是chrome-extension://
URL。而且我想在扩展程序关闭时可靠地关闭所有这些窗口。
我可以做这样的事情:
let w = window.open('url');
window.onunload = () => w.close();
但是,我对这个窗口没有像chrome.windows.create()
这样的控制权。
但是我无法以这种方式关闭由chrome.windows.create()
创建的窗口,因为chrome.windows.remove()
在window.onunload
中将无法工作。
现在我正在这样做:
chrome.windows.create({
url: ...,
type: 'popup',
left: 10000,
top: 0,
width: 1,
height: 1
}, function (w) {
chrome.tabs.executeScript(w.tabs[0].id, {
runAt: 'document_start',
code: 'setInterval(() => { if (!chrome.runtime) window.close(); }, 1000);'
});
...
});
但是打开窗口和注入脚本之间的间隔很小(大约1-2秒),因此仍然无法可靠地关闭窗口。
那么有什么方法可以在扩展名禁用时关闭此类窗口吗?