2010-09-26 222 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() 
} 

现在,每当父窗口关闭,所有的“孩子”窗口关闭为好。即使在弹出窗口下有弹出窗口弹出。只要每个“弹出”窗口都有,它会在任何窗口“上方”关闭时关闭。