我想检测用户是否在同一个 session 中打开了多个窗口或选项卡,如果他打开了 - 我想在屏幕上打印一条特殊信息。
这个限制应该只在一个特殊的 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 仍然存在!)。如果您有服务器 session ,您可以要求用户再次登录(或再次运行您的身份验证过程),并重置此值。您也可以尝试使用 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 - 如何检测用户是否在同一 session 中打开了多个窗口或选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486532/