結合下面的方法混合使用javascript
在
IE
和Firefox
上使用Ajax輪詢檢查網絡是否斷了,其餘瀏覽器上使用online
和offline
事件 偵聽網絡。php
下載地址:onlinenetwork for githubcss
html<head> <script type="text/javascript" src="online.js"></script> </head>
time: 時間不設置默認2000
url:不設置默認全部瀏覽器用online
和offline
事件html
jsvar net = onlinenetwork({ "time":1000, "url":"http://*******.com/ping.php" })
jsnet.onLineHandler(function(){ console.log("連上了!") })
jsnet.offLineHandler(function(){ console.log("斷開網絡!") })
此方法是經過
online
和offline
事件來偵聽是否斷網,可是這個在IE
和Firefox
中,並不是斷網了就是真的斷網了。(如火狐中在選擇菜單>>文件>>脫機工做
纔會觸發online
和offline
事件)java
總之在IE
和Firefox
中通常狀況下不能觸發這倆事件,只有在選擇脫機狀態下才能觸發此事件。git
jswindow.addEventListener('load', function() { var status = document.getElementById("status"); function updateOnlineStatus(event) { var condition = navigator.onLine ? "online" : "offline"; status.className = condition; status.innerHTML = condition.toUpperCase(); } window.addEventListener('online', updateOnlineStatus); window.addEventListener('offline', updateOnlineStatus); });
你懂的github
jssetInterval(function(){ //Ajax... },1000)
經過輪詢生成
IMG
經過img
的onerror
事件判斷是否斷網
此方法弱點就是耗流量(一像素的空gif 輪詢一次1.43KB
)手機上用那就蛋疼了(這個樣子就會偷偷跑流量...)。瀏覽器
jssetInterval(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)