javascript – 如何检测用户是否在同一会话中打开了多个窗口或选项卡?

前端之家收集整理的这篇文章主要介绍了javascript – 如何检测用户是否在同一会话中打开了多个窗口或选项卡?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想检测用户是否在同一会话中打开了多个窗口或标签,如果他这样做了 – 我想在屏幕上打印一个特殊信息.

这个限制只应该在一个特殊的URL中,所以如果用户打开两个带有URL的标签/窗口:http://page.com/limite.htm – 我想打印特殊信息.当用户打开两个带有URL的窗口/标签http://page.com/limite.htmhttp://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

猜你在找的JavaScript相关文章