JS 检测客户端断网情况

常用方法
  • 1 navigator.onLine
  • 2 window.addEventListener()
  • 3 获取网络资源
  • 4 ajax请求

只会在机器未连上路由或者局域网才返回false;也就是连上路由,断网的情况也是返回true

if (navigator.onLine) {
   console.log('网络已连接');
} else {
  console.log('已断网');
}
2. window.addEventListener()

这个方法会有一个很隐蔽的bug。 电脑有个虚拟机桥接的网卡,就算拔掉网线浏览器也认为你是有网; 此时应该把电脑的以太网vm 禁用掉

image

window.addEventListener('online', function() {
    console.log('网络已连接');
});
window.addEventListener('offline', function() {
    console.log('已断网');
});
3 获取网络资源 (利用IMG的onerror事件)

通过轮询生成 IMG 通过 img 的 onerror 事件判断是否断网,此方法弱点就是耗流量(一像素的空gif 轮询一次 1.43KB

setInterval(function(){
            var $img = $('<img src="http://jslite.io/blank.gif?'+(new Date())+'">')
            $img.appendTo('body').css("display","none").load(function(){
     console.log("连接成功!")
     $(this).remove()
}).error(function(){
      console.log("断网了!")
      $(this).remove()
   })
},2000)
4 ajax请求轮询

缺点也是耗资源

setInterval(function(){
    //Ajax...
},1000)

转载于:https://www.cnblogs.com/whkl-m/p/10769832.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值