我有一个网络应用程序游戏,在游戏中我想拥有它,这样如果用户关闭页面或他们的浏览器,它会自动将他们注销。我尝试使用附加到窗口的 onbeforeunload 事件:
window.onbeforeunload = function() {
// perform logout functions here
}
问题是,如果用户刷新页面,它也会触发。有什么方法可以检测用户是完全关闭整个页面,还是只是刷新页面?
最佳答案
没有可检测到的差异。要自动注销用户,您应该在存储登录或 session 信息的 cookie 上设置过期时间。因此,如果您将其设置为 1 小时,则用户基本上会在该时间后注销,因为 cookie 将被销毁。如果您想在他们仍在与网站交互时推迟此自动注销,您可以在他们每次执行某种操作(单击链接、激活 AJAX 调用等)时重置 cookie 的过期时间。这意味着他们会在 1 小时不活动后注销,而不是从登录后仅 1 小时注销,这听起来更像您想要的。
如果将 cookie 的过期时间设置为 0,那么它将在 session 结束后过期。这通常发生在用户完全退出浏览器时。这也是另一种选择。
关于php - 如何区分页面刷新和关闭页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875380/