在以前坐项目的时候,经常碰见通过sessionLisnter来判断用户是否在线的方法,但是由于用户关闭浏览器时不会立刻是否session,因此大部分时候都考虑在页面中通过JS来监控页面是否关闭。
网络上常见的方法有:
window.onbeforeunload
window.onunload
众说纷纭,经过实验:(IE11,chrome,FireFox)
window.onbeforeunload:三个浏览器在通过右上角关闭按钮来关闭的时候,会触发事件。但是页面通过F5来刷新的时候也会触发事件。
(FireFox一开始不能触发,后来不知道为什么可以了,非常诡异,有知道的可以告诉一下)。
测试代码:
window.onbeforeunload = function(e) { var evt = e ? e : (window.event ? window.event : null); evt.returnValue = '离开会使编写的内容丢失'; }
那问题来了,如果采用这种办法的话,会造成用户进行刷新时,后台错误的以为是退出来执行退出操作,造成误处理。
因此不建议再采用这种方式,进行处理。
个人能想到的办法,可以在前台通过轮询的方式进行判断,但是可能会浪费资源。
其他人有没有更好的办法,欢迎留言讨论。