需求:通過window.open方法打開了子窗體,當關閉主窗體時。子窗體應當也關閉。
實現思路:
1.打開子窗體函數window.open(url,winName)的第二個參數winName能夠唯一標識打開的窗體。因此關閉子窗體僅僅須要使用winName.close()函數就可以。
2.一個頁面可能有多個子窗體。
因此須要一個數組存儲全部子窗體對象。關閉時,遍歷數組就可以。
3.子窗體還能夠再打開子窗體。
無限循環下去。因此須要推斷。
此需求能夠通過兩個方法實現。
調用子窗體的關閉函數。
此方法易於理解,可是實際實現過程中發現瀏覽器的關閉事件並沒有。且須要是button點擊關閉還是快捷鍵關閉,略微麻煩一些、
遞歸關閉子窗體
此方法實現簡單,缺點就是全部的窗體存儲子窗體的對象數組需同名
以下是使用遞歸關閉子窗體及子窗體的子窗體方法
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();
}
}
}