3

在过去的几天里,我已经阅读了这个和许多其他链接。

问题是我需要为用户为 mysite.com 打开的每个选项卡或浏览器设置一个唯一标识符(例如站点名称)

我不能使用唯一的会话,例如当我打开 mysite.com 并在会话中选择了“胡萝卜”时,mysite.com 的所有其他选项卡/浏览器现在在特定会话值中都有“胡萝卜”。

但是服务器显然仍然唯一地标识每个浏览器/选项卡。有没有办法获取这个唯一的浏览器/标签 ID,或者创建一个唯一的 ID?

我不是指通过 JavaScript 自己生成唯一 ID,我在 StackOverflow 上看到了一些很好的示例。问题是我需要在每个母版页上实现它并在母版页/非母版页之间携带它。例如,在我的例子中,它不起作用,因为我可以打开浏览器,如果我在几个页面上运行它 20 次,它会生成 20 个不同的 ID,例如当我无法跨端口传输值时。

所以请不要浪费大家的时间,这不是一个随机的 GUID 创建问题,这个问题涉及为每个选项卡/浏览器获取一个唯一的可重新创建 ID(如果它丢失),最好通过到服务器的链接来识别。

4

1 回答 1

5

这是你触及的一个大话题。如果您只需要在表单提交期间保留 ID,则可以采用客户端window.name属性的方法,并使用该window.onload值传播隐藏字段。但是当用户关注超链接(点击网站上的链接)时,这将不起作用。onload:检查是否window.name设置;如果未设置,则分配一个 GUID。如果设置,设置隐藏字段= window.name。因此,在提交时,您的表单将具有带有window.nameGUID 的隐藏字段。

您也可以使用 HTML5 window.sessionStorage,它可以解决您的所有问题,但不适用于旧版浏览器。

如果您需要支持向后浏览器和非提交类型,那么您将需要在客户端编写一些非常复杂的 cookie/会话管理。不漂亮。只希望以上2就足够了。

于 2013-01-28T09:50:59.967 回答