我有以下情况:
- 我们客户网站上的用户点击了链接。它使用他们的凭据自动登录我们的网站,该网站在新窗口中启动。
- 我们网站上的用户注销,并被发送到执行 JavaScript
window.close()
的页面,该页面会关闭窗口。如果他们是直接登录我们网站的客户,那么他们会返回到登录页面,但是自动登录后,他们对登录页面没有用处,因此页面自动关闭更好。
但是有时会发生以下情况
- 我们客户网站上的用户点击链接,使用其凭据自动登录我们的网站,该网站会在新窗口中启动。
- 在我们的应用程序中,他们点击“帮助”链接,此时这是另一个弹出窗口。
- 在某些时候,他们会退出我们的应用程序,从而关闭该窗口。
- 帮助窗口仍然打开。
- 用户点击帮助窗口中的链接。
- 用户不再登录,现在会转到该帮助窗口中的登录屏幕。
- 集体歇斯底里!
所以我想做的是确保当原始窗口关闭时,它也会关闭它生成的所有弹出窗口。我认为这可以在 JavaScript 中完成,但是如何实现呢?
附录:下面的建议很好,但问题是浏览器关闭时用户所在的页面与生成弹出窗口的页面不同,因此页面的句柄都消失了。如何获取具有特定名称的弹出窗口的句柄?
最佳答案
<html>
<head>
<script>
var childwindows=new Array();
function openchild(){
var childW=window.open('in.html');
childwindows[childwindows.length]=childW;
}
function closewindow(){
for(i in childwindows){
if(childwindows[i] && !childwindows[i].closed) {childwindows[i].closewindow();}
}
window.close();
}
</script>
</head>
<body>
<br/>
<a onclick="openchild();">open child window</a>
<br/><br/>
<a onclick="closewindow();">close me</a>
</body>
</html>
关于javascript - 如何确保自动关闭的窗口也关闭其所有生成的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726000/