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>