2010-09-26 223 views

回答

2

如果父窗口和子窗口是指彈出式窗口和打開它的窗口,則無法完全做到這一點,但主窗口中的以下腳本將關閉彈出式窗口窗口被卸載(即關閉或用戶導航到另一個頁面或刷新):

var popUp = window.open("popup.html", "popup", "width=300,height=200"); 

window.onunload = function() { 
    if (popUp && !popUp.closed) { 
     popUp.close(); 
    } 
}; 

歷史註釋:它曾經是有可能做到這一點在某些瀏覽器(如Firefox)的使用在dependent窗口屬性window.open呼叫的第三個參數(例如var popUp = window.open("popup.html", "popup", "width=300,height=200,dependent");),但according to quirksmode它不再支持任何操作。我沒有自己測試過。

0

當從一個窗口打開多個子窗口並且想關閉父窗口關閉時的所有窗口,則需要將子窗口引用存儲在數組中。在窗口的onunload事件上,您可以迭代此數組並在每個子窗口引用上調用close()方法。查看完整示例click here

window.onunload = function closeChildWin(){ 
for(var i=0; i<childwindows.length; i++){ 
    try{ 
    childwindows[i].close() 
    }catch(e){ 
    alert(e); 
    } 
} 
} 
0

我在從彈出窗口中創建彈出窗口時遇到了此問題。在創建窗口名稱後訪問窗口名稱似乎什麼都不做。創建

首先一個窗口:

popup = window.open(address, name, params) 

首先,我試圖做到這一點:

window.onbeforeunload = function() { 
    popup.close() 
} 

但問題是,這是後命名爲「彈出」無法訪問創建。我沒有得到任何迴應。

所以這就是我如何得到它的工作。的JavaScript彈出窗口裏面我說:

window.parent.onbeforeunload = function() { 
    window.close() 
} 

現在,每當父窗口關閉,所有的「孩子」窗口關閉爲好。即使在彈出窗口下有彈出窗口彈出。只要每個「彈出」窗口都有,它會在任何窗口「上方」關閉時關閉。