我的Chrome扩展程序的弹出窗口通过window.open()
打开一个新窗口。但是,当我在新窗口的引用上调用close时,它实际上也会同时关闭以编程方式创建的窗口和扩展本身的弹出窗口。当我通过键盘(在Mac上为Cmd + W
关闭新窗口时,会发生相同的行为,但是当我用光标从窗口的X
(关闭)中关闭新窗口时,不是按钮(只有窗口关闭并且扩展名才保持打开状态)。
这是打开和关闭窗口的方式:
const popup = window.open('domain.com/extension', 'Title', params)
window.addEventListener('message', async ({ data }) => {
if (!data.status) popup.close()
})
子窗口本身调用window.close()
时也会发生同样的事情:
if (location.pathname === '/extension') {
window.opener.postMessage({ status: condition }, '*')
return window.close()
}
这是因为焦点在窗口之间转移(意味着扩展名打开的窗口暂时失去焦点)吗?有任何已知的解决方法吗?