是否有一种跨浏览器,可以唯一地识别每个浏览器窗口? 我需要存储一些窗口独有的值 即使用户在同一浏览器上打开两个窗口到同一站点。
不涉及Ajax,链接上的每次点击都会加载新页面。
我如何从服务器访问该名称? (为此,假设我使用php,但使用任何其他语言的示例,也很好)
答案 0 :(得分:3)
您可以通过在所有网址的查询字符串中放置和维护唯一参数来识别窗口。例如,如果当前网址为/foo.php?windowid=abhn7y76g7hygy7yhnui98u8mc
,那么该网页中的每个网址html将具有与网址和文档中其他网址分开的ID。 uniqid()是完美的,因为它使用时间,因此它们按字典顺序增加id。
您需要处理的一个边缘案例是有人打开两次完全相同的链接(可能是通过点击,或者通过复制粘贴网址并手动打开一个新窗口)。我认为唯一真正的解决方案是让服务器跟踪已经使用了哪个ID,如果它注意到同一个id的第二个请求,它会将请求重定向到相同的URL,但是新的id。这将在所有浏览器窗口中保持唯一ID。
第二个想法,甚至不打扰将HTML附加到HTML中的URL。如果没有id,只需让服务器执行逻辑,重定向到具有新id的相同url。如果是id,并且之前已经使用了id,则使用新的id重定向到相同的URL。
确保不为html页面发送缓存标头,因为如果使用后退按钮,您需要浏览器重新检查服务器。
答案 1 :(得分:2)
window.name
可以通过JavaScript设置。奇怪的是,它还可以容纳一些巨大的字符串数据,有时也可以用作客户端存储。
您必须将每个请求的名称传递回服务器,以便知道调用者中的哪个窗口。