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

标签 javascript

我想检测用户是否在同一个 session 中打开了多个窗口或选项卡,如果他打开了 - 我想在屏幕上打印一条特殊信息。

这个限制应该只在一个特殊的 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 仍然存在!)。如果您有服务器 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/

相关文章:

javascript - 为什么在调用不带参数的函数时出现未定义错误?

javascript - 检查当前时间是否在 JavaScript 中的两个给定时间之间

javascript - 如何使用 ES6 和 React Native

javascript - 什么是 JSONP,为什么要创建它?

java - 测量连接速度并在 Web 应用程序中显示

javascript - 理解 jQuery $.extend() 的正确用法

javascript - 如何使用 JavaScript 打印网页上的非常大的图像

javascript - PDF.js 无法在 IE9 上运行

javascript - 如何在backbone.js中为事件编写单元测试

javascript - 编码 UI - C# - 时间 itemprop 标签 - 如何验证年份是否存在