只會在機器未連上路由或者局域網才返回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)