JavaScript 测试子视窗已关闭或还存在

网页中使用在 JavaScript 可以使用 window.open() 方法来打开子视窗,并返回一个 window 物件,Boolean 布林值代表该子视窗的参考。可以使用这个物件来操作子视窗的属性和方法,例如改变其位置、大小、内容等。但是如果使用者或程式关闭了子视窗就无法使用这个物件。因此需要 window.open() 方法方法来测试子视窗是否已经关闭或还存在。另一种方法是使用 try-catch 语句来测试子视窗的 window 物件是否可访问,目前该方法已经不太适用当前的浏览器。


按下 再度按第二次时则会提示「新标签视窗」子视窗已开启。目前比较少用这方法,有时似乎被浏览器挡掉。

let w = window.open(strUrl, strWindowName, [strWindowFeatures]);

JavaScript

let windowCheck = false;
function newWindowOpen() {
  if (windowCheck == false) {
    windowCheck = window.open();
  } else {
    try {
      windowCheck.status;
      alert("子视窗已开启");
    } catch (e) {
      windowCheck = false;
      newWindowOpen();
    }
  }
}

Html

<button onclick="newWindowOpen()">测试子视窗</button>