首頁 >web前端 >js教程 >函數window.open實作關閉所有的子視窗_javascript技巧

函數window.open實作關閉所有的子視窗_javascript技巧

WBOY
WBOY原創
2016-05-16 15:47:331615瀏覽

這篇文章介紹如何用window.open方法開啟一個子窗口,當我們要關閉主視窗時,這時候所有的子視窗也會跟著關閉。下面有我的實作想法和程式碼,分享給大家。

實作思路:
1.開啟子視窗函數window.open(url,winName)的第二個參數winName可以唯一標識開啟的視窗。因此關閉子視窗只需要使用winName.close()函數即可。
2.一個頁面可能有多個子視窗。因此需要一個數組來儲存所有子視窗物件。關閉時,遍歷數組即可。
3.子視窗還可以再開啟子視窗。無限循環下去。因此需要判斷。
此需求可以透過兩個方法實現。

呼叫子視窗的關閉函數。
此方法易於理解,但是實際實作過程中發現瀏覽器的關閉事件並沒有。且需要是按鈕點擊關閉還是快捷鍵關閉,稍微麻煩一些、遞歸關閉子視窗
此方法實作簡單,缺點就是所有的視窗儲存子視窗的物件陣列需同名

以下是使用遞迴關閉子視窗及子視窗的子視窗方法

function closeSonWindow(win){
  for(var index=0;index<win.length;index++){
    //如果窗口已关闭
    if(win[index].closed){
      continue;
    }
    //如果窗口没有可以打开的子窗口
    if(typeof(win[index].openedWindow)=="undefined"){
      win[index].close();
      continue;
    }
    if(win[index].openedWindow.length==0){
      win[index].close();
    }else{
      closeSonWindow(win[index].openedWindow);
      win[index].close();
    }
  }
}

以上就是本文的全部敘述,希望對大家有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn