我想检测用户是否在同一会话中打开了多个窗口或标签,如果他这样做了 – 我想在屏幕上打印一个特殊信息.
这个限制只应该在一个特殊的URL中,所以如果用户打开两个带有URL的标签/窗口:http://page.com/limite.htm – 我想打印特殊信息.当用户打开两个带有URL的窗口/标签:http://page.com/limite.htm和http://page.com/index.htm时 – 一切正常,我不会显示任何信息.
可能吗?
谢谢.
解决方法
我认为最好的方法是使用localStorage.
http://www.gwtproject.org/doc/latest/DevGuideHtml5Storage.html
从链接,关于localStorage:
Availability to other Windows/tabs: Shared across every window and tab of one browser running same web app
因此,您可以在选项卡/窗口打开时设置条目,并在关闭时更改它.当另一个选项卡/窗口打开时,首先检查此条目值.
显然你需要小心:例如,浏览器崩溃可能不会触发“关闭”部分,因此用户将无法打开新选项卡,即使没有打开(localStorage仍然存在!).如果您有服务器会话,则可以要求用户再次登录(或再次运行您的身份验证过程),并重置此值.您还可以尝试使用sessionStorage条目来跟踪此类问题.从链接,关于sessionStorage:
Persistence: Survives only as long as its originating window or tab.
此外,还有一种称为“跨窗口消息传递”的功能,允许您在选项卡之间进行通信,但请检查您要支持的浏览器是否支持它.
http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage