刷新时关闭子窗口

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

当子窗口刷新或导航到其他地方时,如何关闭从

window.open
打开的子窗口?

我已经尝试了下面的代码,但它不起作用:

const popout = window.open('', '', 'popout');
popout.onbeforeunload = () => {
    popout.close();
};

类似的代码可以在父窗口刷新时关闭子窗口:

const popout = window.open('', '', 'popout');
window.onbeforeunload = () => {
    popout.close();
};

我见过其他网站这样做,但我无法弄清楚,而是留下一个空白的弹出窗口,必须手动关闭。

javascript
1个回答
0
投票

我认为你的

window.open
说法是错误的。

你看,第一个参数中没有提供 url,第三个参数是新窗口功能...并且

'popout'
不是第三个参数的有效值。

https://developer.mozilla.org/en-US/docs/Web/API/Window/open#windowfeatures

PS: 此代码片段永远不会工作,因为它会阻止弹出窗口(新窗口)...只需复制代码,打开新选项卡并输入

about:blank
,然后将代码粘贴到控制台即可。它将打开一个弹出窗口,然后您可以返回到
about:blank
页面(无需关闭弹出窗口)并单击生成的链接。当页面卸载时,弹出窗口将关闭。

let myPopupWindow;

window.addEventListener
(
  'beforeunload', unloadEvent =>
  {
    myPopupWindow && myPopupWindow.close();
  }
);

try
{
  myPopupWindow = window.open('about:blank', 'popup', 'popup; width=300; height=300;');
}
catch ( Issue )
{
  console.log('Error while opening a new window:', Issue?.message ?? Issue);
}

const newAnchor = document.createElement('a');
{
  newAnchor.href = 'about:blank';
  newAnchor.textContent = 'Try clicking this.';
}

document.body.appendChild(newAnchor);

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