javascript - 如何确保自动关闭的窗口也关闭其所有生成的窗口?

标签 javascript authentication popup

我有以下情况:

  1. 我们客户网站上的用户点击了链接。它使用他们的凭据自动登录我们的网站,该网站在新窗口中启动。
  2. 我们网站上的用户注销,并被发送到执行 JavaScript window.close() 的页面,该页面会关闭窗口。如果他们是直接登录我们网站的客户,那么他们会返回到登录页面,但是自动登录后,他们对登录页面没有用处,因此页面自动关闭更好。

但是有时会发生以下情况

  1. 我们客户网站上的用户点击链接,使用其凭据自动登录我们的网站,该网站会在新窗口中启动。
  2. 在我们的应用程序中,他们点击“帮助”链接,此时这是另一个弹出窗口。
  3. 在某些时候,他们会退出我们的应用程序,从而关闭该窗口。
  4. 帮助窗口仍然打开。
  5. 用户点击帮助窗口中的链接。
  6. 用户不再登录,现在会转到该帮助窗口中的登录屏幕。
  7. 集体歇斯底里!

所以我想做的是确保当原始窗口关闭时,它也会关闭它生成的所有弹出窗口。我认为这可以在 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/

相关文章:

javascript - WordPress 网站上的 Google map API

javascript - 在滚动上添加 offset().top 金额

asp.net - “覆盖”javascript 函数

javascript - 在 Rails 7 中激活不可固定的库

python - 单击按钮时如何在 Tkinter 中弹出?

php - 如何使用参数和 php 滑动弹出窗口(html)

c# - 如何使用默认浏览器打开具有基本授权的网址?

c# - .NET Core 3.0 中 AspNetUserToken 和自定义 JWT token 之间的差异

tomcat - tomcat上的Jhipster登录问题

javascript - Python - selenium webdriver - 无法切换到注册弹出窗口