window.open 打開子窗體,關閉全部的子窗體


需求:通過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();
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM