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