有两个选项卡打开到站点,您能告诉哪个选项卡是活动的吗?

时间:2012-03-21 21:15:24

标签: javascript asp.net-mvc browser

我们的内部网站点有一组不同寻常的要求。

  • 它的功能类似于多页桌面应用程序。对于单个客户,我们的用户将在最多30个屏幕上输入信息。
  • 这是一个基于Asp.Net MVC3的站点,禁用了所有会话状态,以便在Web场上高效运行。
  • 出于隐私原因,我们无法使用查询字符串来显示任何客户信息。我们目前正在使用cookie来存储客户身份。
  • 我们的用户群希望在一个浏览器(IE,FF或Chrome)中打开多个标签页。

如果我假设用户只会使用单个,那么我可以将客户端信息存储在一个简单的cookie中,一切正常。

当用户打开第二个标签时,它会重复使用相同的Cookie。不是理想的条件。那么有可能确定浏览器标签之间的差异吗?

2 个答案:

答案 0 :(得分:0)

查看window.name变量。在页面加载时,您可以在其中添加一些独特的内容,例如日期/时间,并将相同的内容存储在您的cookie中(如果它不存在)。如果用户打开新选项卡(或窗口),则该值将为空,并且cookie将不会。 window.name会在页面加载过程中持续存在(如果内存服务),因此这将允许您唯一标识每个标签。

答案 1 :(得分:0)

您可以使用sessionStorage对象存储特定于单个窗口/选项卡的数据。它就像任何其他JavaScript对象一样,你可以分配(sessionStorage.foo = "bar"),检索(baz = sessionStorage.foo)和删除(delete sessionStorage.foo),但与其他JS对象不同,任何属性集都将是在单个窗口中持续跨页面加载。

唯一的缺点是它不会将此数据发送到服务器。您必须使用AJAX调用自己完成此操作。