我有一个网络应用程序游戏,而在游戏中,我想拥有它,所以如果用户关闭页面或他们的浏览器,它将自动注销.我尝试使用附加到窗口的onbeforeunload事件:
window.onbeforeunload = function() {
// perform logout functions here
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果用户刷新页面,也会触发.有没有办法可以检测用户是否完全关闭整个页面,或只是刷新它?
没有可检测到的差异.要自动注销用户,您应该在存储登录或会话信息的cookie上设置到期日期.因此,如果您将其设置为1小时,则用户将在该时间之后注销,因为cookie将被销毁.如果您希望在他们仍然与网站交互时推迟此自动注销,则可以在每次执行某种操作(单击链接,激活AJAX调用等)时重置cookie的到期时间.这意味着他们将在1小时不活动后退出,而不是登录后1小时,这听起来更像你想要的.
如果您将cookie的到期时间设置为0,那么它将在会话结束后使其到期.这通常发生在用户完全退出浏览器时.这也是另一种选择.