结合下面的方法混合使用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)