据我所知,当用户关闭浏览器时,会清除会话变量。有没有办法在用户关闭浏览器选项卡时清除会话变量?
我提出这个问题的原因是,如果用户在网站上关闭标签页但未关闭浏览器,并且用户在同一浏览器会话中的另一个标签页中返回到该网站,则需要区分两次访问。
据我所知,当用户关闭浏览器时,会清除会话变量。有没有办法在用户关闭浏览器选项卡时清除会话变量?
我提出这个问题的原因是,如果用户在网站上关闭标签页但未关闭浏览器,并且用户在同一浏览器会话中的另一个标签页中返回到该网站,则需要区分两次访问。
会话变量是服务器端的,而标签关闭是客户端的操作,因此您需要以某种方式向服务器发送信号以清除这些会话变量。
对我来说,最明显的方法是使用浏览器的onbeforeunload方法并通过ajax向服务器发送一些内容来清除会话。
不过这是危险的领域。您确定不想允许用户同时打开和使用您网站的多个选项卡吗?因为如果我在两个选项卡中打开了您的网站,这种技术将在关闭一个选项卡时清除会话,使另一个选项卡无法使用(不是无用,只是可能会导致此页面的地毯被拉走,现在会话已经消失)。
请查看以下链接以获取最佳答案: 为什么关闭选项卡不会删除会话Cookie?。
您可以在URL的末尾附加一些随机文本并将其存储以供参考,如果用户来自新标签页且没有附加随机文本,则可以确定用户来自不同的标签页。