這篇文章介紹如何用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(); } } }
以上就是本文的全部敘述,希望對大家有幫助。