我的PHP应用程序菜单上有一个很好的LogOut按钮,但有些人不使用它,他们只是退出浏览器。
有什么方法可以检测到这一点(我意识到它不会处理浏览器崩溃,但它比我现在更好并且覆盖了99%的情况)。
这将是我的第一部JS。
我希望有人可以对可怜的JS n00b表示同情,并指出我正确的方向。
由于
更新:请不要使用基于计时器的解决方案。我有一个,但是一个用户将超时设置为999999个ninutes,同时用户数设置为1,然后关闭他的浏览器&把自己锁在外面
更新:似乎那些知道的人说它不能在JS中完成,谷歌建议我在DOM中不支持。
但是,另一种方式呢?伙计们,横向思考。当用户使用我的应用中的页面打开新标签时,我可以推送Cookie吗?然后在用户希望关闭标签时删除cookie?并检查我是否正在重新启动最后一个cookie&通知服务器将其视为注销?
如果不是cookie还有其他一些方法吗? (在打开和关闭的页面上使用Ajax,服务器可以决定最后一个标签是否已关闭?)
答案 0 :(得分:3)
如果在最后'x'秒/分钟内没有在它下面发出请求,则只需在服务器端超时。
通过JS执行此操作可能非常简单,只需每隔5秒向服务器发送一次定期“心跳”请求,该选项会在关闭选项卡时停止。然后,如果您的注销超时是5分钟,那么如果它没有获得5分钟的心跳,您可以尽可能地确信客户端已经消失。
例如,如果您的网页内容很多(比如很长的文章),用户不会在几分钟/小时内发出任何请求,但是没有关闭标签,那么这很有用这样,你希望他们保持活跃的会话。
答案 1 :(得分:1)
onbeforeunload
中关闭页面时执行的代码。但是,浏览器可能会中止您的代码,如果花费的时间太长。答案 2 :(得分:1)
没有明确的方法来做你所要求的事情,事实上这在此之前已被问过:
javascript detect browser close tab/close browser
使用会话超时,就像建议的第一条评论一样。