我有以下情况:
window.close()
的页面,该页面关闭窗口。如果他们是直接登录我们网站的客户,那么他们会回到登录页面,但是自动登录,他们没有使用登录页面,所以页面自动关闭更好。但有时会发生以下情况
所以我想要做的是确保当原始窗口关闭时,它还会关闭它产生的任何弹出窗口。我认为这可以在JavaScript中完成,但是如何?
ADDENDUM:以下建议很不错,但问题是当浏览器关闭时用户所在的页面不是产生弹出窗口的同一页面,因此页面的句柄都消失了。如何获取具有特定名称的弹出窗口的句柄?
答案 0 :(得分:2)
<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>
答案 1 :(得分:1)
跟踪用弹出窗口打开的窗口名称。
有一个纯粹做window.close()
的页面当您执行常规window.close()时,请确保为每个弹出窗口执行window.open(“我们的关闭页面”,windowNameIStored)。
这是我向下游提交给我们的供应商并且效果很好的修复程序。
答案 2 :(得分:0)
停止使用弹出窗口,这不是1998年:)
说真的,尽管所有内置的浏览器功能和第三方应用程序也会阻止它们,但它们变得非常不可靠。你是否100%确定弹出窗口?你必须进行测试才能确定,但是也许第三方应用程序在测试完成后关闭它,谁知道,所以现在客户的体验很糟糕。如果他们真的付钱给客户,那么您的客户可能会亏钱。当然,你可以发一条消息说“关闭你的弹出窗口拦截器”,但老实说,有多少用户真的知道如何做到这一点?
每当我被要求弹出窗口时,我只是盯着那些请求它的人,就像他们说的是其他语言,然后问是否是1998年。弹出窗口是一个或多个的结果以下:糟糕的用户界面设计,无知的管理者和/或草率/懒惰的开发。虽然我确定还有其他原因。
只需2美分。