函數(shù)window.open實(shí)現(xiàn)關(guān)閉所有的子窗口
此文介紹了如何用window.open方法打開一個(gè)子窗口,當(dāng)我們要關(guān)閉主窗口時(shí),這時(shí)候所有的子窗口也會(huì)跟著關(guān)閉。下面有我的實(shí)現(xiàn)思路和代碼,分享給大家。
實(shí)現(xiàn)思路:
1.打開子窗口函數(shù)window.open(url,winName)的第二個(gè)參數(shù)winName可以唯一標(biāo)識(shí)打開的窗口。因此關(guān)閉子窗口只需要使用winName.close()函數(shù)即可。
2.一個(gè)頁面可能有多個(gè)子窗口。因此需要一個(gè)數(shù)組存儲(chǔ)所有子窗口對象。關(guān)閉時(shí),遍歷數(shù)組即可。
3.子窗口還可以再打開子窗口。無限循環(huán)下去。因此需要判斷。
此需求可以通過兩個(gè)方法實(shí)現(xiàn)。
調(diào)用子窗口的關(guān)閉函數(shù)。
此方法易于理解,但是實(shí)際實(shí)現(xiàn)過程中發(fā)現(xiàn)瀏覽器的關(guān)閉事件并沒有。且需要是按鈕點(diǎn)擊關(guān)閉還是快捷鍵關(guān)閉,稍微麻煩一些、遞歸關(guān)閉子窗口
此方法實(shí)現(xiàn)簡單,缺點(diǎn)就是所有的窗口存儲(chǔ)子窗口的對象數(shù)組需同名
下面是使用遞歸關(guān)閉子窗口及子窗口的子窗口方法
function closeSonWindow(win){
for(var index=0;index<win.length;index++){
//如果窗口已關(guān)閉
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();
}
}
}
以上就是本文的全部敘述,希望對大家有所幫助。
相關(guān)文章
在TypeScript中迭代對象鍵Object.keys不起作用的原因和解決方案
在TypeScript中迭代對象鍵object?keys可能是一場噩夢,以下是我所知道的所有解決方案,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10
layer.open關(guān)閉父窗口 以及調(diào)用父頁面的方法
今天小編就為大家分享一篇layer.open關(guān)閉父窗口 以及調(diào)用父頁面的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
重置Redux的狀態(tài)數(shù)據(jù)的方法實(shí)現(xiàn)
這篇文章主要介紹了重置Redux的狀態(tài)數(shù)據(jù)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
JS 判斷undefined的實(shí)現(xiàn)代碼
JS中如何判斷undefined2009-11-11
js 毫秒轉(zhuǎn)天時(shí)分秒的實(shí)例
下面小編就為大家分享一篇js 毫秒轉(zhuǎn)天時(shí)分秒的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11

