我创建了一个弹出窗口,如下所示:
popupWindow = window.open("about:blank", "_blank", "popup=yes");
我有一个函数
afterFn()
,我需要在popupWindow
关闭后执行。
我目前的做法如下:
async function pollPopupWindow() {
while (popupWindow) {
await new Promise((r) => setTimeout(r, 1000));
if (popupWindow.closed) {
popupWindow = null;
afterFn();
}
}
}
pollPopupWindow();
我想知道是否可以在弹出窗口关闭时简单地执行
afterFn()
?我尝试了以下代码,但它不起作用
popupWindow.addEventListener("beforeunload", () => {
afterFn();
});
有什么想法吗?
您使用
addEventListener('beforeunload')
的方法将不起作用,因为当弹出窗口关闭时,不会触发 beforeunload
事件,而是在弹出窗口内的页面被卸载时(例如,用户导航离开或重新加载弹出窗口) 。所以总而言之,这只是您想要的功能的问题,而且您当前的方法似乎是最好的方法。