1

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

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

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

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

  1. 带有登录表单的登录页面 - HTML5 + CSS3
  2. 应用程序页面(弹出窗口) - 纯 ExtJS
  3. 一个网络服务——ServiceStack

Web 服务公开用于登录目的的方法以及其他方法,并且它始终返回JSON响应。在打开弹出窗口和关闭窗口之前,必须设置会话变量(如果登录成功)。

问题来了:

如果登录成功,如何完成打开弹出窗口并关闭当前窗口/选项卡的场景?任何帮助、提示、参考、建议、批评都是我所期待的。

谢谢!

4

2 回答 2

1

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

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

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

<input type="button" onClick="window.open('popop.html'); window.close();" value="open" />
于 2012-08-14T09:04:44.283 回答
0

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

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

这样做有什么真正的好处,还是只是该网站的虚假新颖性?您陈述的原因都适用于单窗口方案。

于 2012-08-14T12:06:55.123 回答