弹出窗口关闭后执行函数

问题描述 投票:0回答:1

我创建了一个弹出窗口,如下所示:

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();
});

有什么想法吗?

javascript
1个回答
0
投票

您使用

addEventListener('beforeunload')
的方法将不起作用,因为当弹出窗口关闭时,不会触发
beforeunload
事件,而是在弹出窗口内的页面被卸载时(例如,用户导航离开或重新加载弹出窗口) 。所以总而言之,这只是您想要的功能的问题,而且您当前的方法似乎是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.