JS判断用户是否在线的方法

在以前坐项目的时候,经常碰见通过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 = ‘离开会使编写的内容丢失‘;
}

 

那问题来了,如果采用这种办法的话,会造成用户进行刷新时,后台错误的以为是退出来执行退出操作,造成误处理。

因此不建议再采用这种方式,进行处理。

 

个人能想到的办法,可以在前台通过轮询的方式进行判断,但是可能会浪费资源。

 

其他人有没有更好的办法,欢迎留言讨论。

时间: 2024-11-03 12:40:55

JS判断用户是否在线的方法的相关文章

怎样判断用户是否在线

1.写后台线程,心跳机制等判断用户是否在线. 2.利用session 每次用户登录会产生一个session 因为考虑到一台电脑多个浏览器之间session不共享也就是可能会形成这样一个概念,你的同一个用户名在服务器中打开了两个不同版本的浏览器因此保存了2个session,也就造成了不准确的因素所以你可以采用一张专门登录的数据库表格,字段不用多 保存登录的用户名就行,然后javaweb中有session的监听接口HttpSessionBindingListener,这个接口包含的两个方法分别会在每

js判断用户是否正在滚动滚动条,滚动条滚动是否停止

js智能判断是否可以自动滚动 比如,做一个音乐播放器,边播放,边定位歌词,播放的时候,需要自动定位到播放语句,但是用户去拖动或者滚动div(歌词面板)时,这时就必须停止自动滚动,或者说是不能自动滚动,这个怎么做呢? 如果能时时判断 用户是否在滚动就好了? 或者能够 知道滚动开始 和 结束事件 也行? 可惜均不知道! 目前,仅可以利用的就是div元素的滚动事件,下面是我的实现思路,如何判断用户是否滚动停止? 1.html代码 <div id="panel"> <div

js判断用户的浏览器设备是移动端还是pc端

最近做的一个网站页面中需要根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="text/javascript"> function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "i

js 判断window操作系统 2种方法

js 判断window操作系统 1function detectOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows"); var isMac = (navigator.platform == "Mac68K") || (navigator.platfor

Js - 判断用户是否上网(连接网络) - HTML5在线、离线online的使用

(文中对兼容性的测试还未全部完成) 通过对html5的navigator新特性的onLine属性判断,可轻松搞定是否在线的判断(true:在线:false:离线). 兼容性: (已测)IE6+.Safari 5+支持的比较好: (未测)Firefox 3+也支持navigator.onLine属性,但你必须手工选中菜单项“文件-Web开发人员(设置)-脱机工作”才能让浏览器正常的工作: (未测)Chrome需要12以上: 1.代码实现: if(window.navigator.onLine==t

js判断类型为数字的方法实现总汇——原生js判断isNumber()

方法一[推荐]: 最容易想到的是用typeof来判断是否是number类型 ,但是如果为NaN会被认为也是number类型,因此我们需要使用isNaN来排除NaN的情况. function isNumber(obj) { return typeof obj === 'number' && !isNaN(obj) } 方法二: isNaN(obj)   等价于isFinite().Infinity在js表示数字的无穷大,判断是否可用做数字的最佳方法则是isFinite(),因为该方法会筛除掉

[转]js判断数据类型的四种方法

原文地址:https://www.cnblogs.com/crackedlove/p/10331317.html 1.typeof typeof是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型.返回的结果用该类型的字符串(全小写字母)形式表示,包括number,string,boolean,undefined,object,function,symbol等. typeof ""; //string typeof 1; //number typeof false; //b

JS判断对象是否存在的方法

Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易.但是实际上,它涉及的语法问题,远比我们想象的复杂.Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法.只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别

[JS] js 判断用户是否在浏览当前页面

var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null; var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange'); var onVisibilityChan