只会在机器未连上路由或者局域网才返回false;也就是连上路由,断网的状况也是返回truecss
if (navigator.onLine) { console.log('网络已链接'); } else { console.log('已断网'); }
这个方法会有一个很隐蔽的bug。 电脑有个虚拟机桥接的网卡,就算拔掉网线浏览器也认为你是有网; 此时应该把电脑的以太网vm 禁用掉ajax
window.addEventListener('online', function() { console.log('网络已链接'); }); window.addEventListener('offline', function() { console.log('已断网'); });
经过轮询生成 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)
缺点也是耗资源网络
setInterval(function(){ //Ajax... },1000)