弹出窗口打开时关闭当前浏览器窗口或选项卡

时间:2012-08-14 08:36:50

标签: asp.net extjs popup

所以,我在一个网站上看过这种方法(虽然我不记得了),它的工作原理如下:

首先,有一个简单的登录表单页面。但是当您单击表单的登录按钮时,如果用户和密码的验证是肯定的,并且来自服务器的响应也是肯定的,则会出现一个新的弹出窗口(其中包含用javascript编写的应用程序 - {{3然后关闭浏览器的当前选项卡(登录表单页面)。

在我看来,这是一种很好的方法,因为ExtJS是单页面应用程序模式,功能强大,足以运行完整AJAX,没有可见的重定向。此外,弹出方案消除了浏览器页面控制按钮(后退,前进,刷新),地址栏是只读的。

现在,我试图通过使用ASP.NET作为服务器端脚本语言来帮助重现这一点,在ExtJS中作为主要应用程序。因此,结果如下:

  1. 使用登录表单登录页面 - HTML5 + CSS3
  2. 申请页面(弹出窗口) - 纯粹是ExtJS
  3. 网络服务 - ExtJS
  4. Web服务公开了用于登录的方法以及其他方法,它始终返回JSON个响应。在打开弹出窗口并关闭窗口之前,必须设置会话变量(如果登录成功)。

    这就是问题所在:

    如果登录成功,我如何完成打开弹出窗口并关闭当前窗口/标签的方案?任何帮助,提示,参考,建议,批评都完全是我的意思我期待着。

    谢谢!

2 个答案:

答案 0 :(得分:1)

你应该能够在打开另一个窗口后关闭当前窗口。

window.open('new window url'); window.close();

我在我的盒子上尝试了这个,它在chrome和safari上运行良好

<input type="button" onClick="window.open('popop.html'); window.close();" value="open" />

答案 1 :(得分:0)

如果你真的不需要,请远离打开弹出窗口。所有现代浏览器都设置为阻止您默认打开弹出窗口。

AFAIK打开新窗口(带有目标属性)的唯一100%场景是用户点击的超链接。
某些浏览器会屏蔽window.open()甚至document.getElementById("hiddenLink").click()

这样做有什么真正的好处,还是只是该网站的虚假新奇?你陈述的原因在一个窗口的情况下都很好。