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

來源:互聯網
上載者:User

此文介紹了如何用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();    }  }}

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.