在javascript中关闭父窗口时如何关闭子窗口?
答
如果父窗口和子窗口是指弹出式窗口和打开它的窗口,则无法完全做到这一点,但主窗口中的以下脚本将关闭弹出式窗口窗口被卸载(即关闭或用户导航到另一个页面或刷新):
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它不再支持任何操作。我没有自己测试过。
答
当从一个窗口打开多个子窗口并且想关闭父窗口关闭时的所有窗口,则需要将子窗口引用存储在数组中。在窗口的onunload事件上,您可以迭代此数组并在每个子窗口引用上调用close()方法。查看完整示例click here
window.onunload = function closeChildWin(){
for(var i=0; i<childwindows.length; i++){
try{
childwindows[i].close()
}catch(e){
alert(e);
}
}
}
答
我在从弹出窗口中创建弹出窗口时遇到了此问题。在创建窗口名称后访问窗口名称似乎什么都不做。创建
首先一个窗口:
popup = window.open(address, name, params)
首先,我试图做到这一点:
window.onbeforeunload = function() {
popup.close()
}
但问题是,这是后命名为“弹出”无法访问创建。我没有得到任何回应。
所以这就是我如何得到它的工作。的JavaScript弹出窗口里面我说:
window.parent.onbeforeunload = function() {
window.close()
}
现在,每当父窗口关闭,所有的“孩子”窗口关闭为好。即使在弹出窗口下有弹出窗口弹出。只要每个“弹出”窗口都有,它会在任何窗口“上方”关闭时关闭。