使用JS在浏览器中判断当前网络连接状态的几种方法

JavaScript015

使用JS在浏览器中判断当前网络连接状态的几种方法,第1张

通过navigator.onLine判断当前网络状态:

if(navigator.onLine){

...}else{ ...}

非常简单,但是并不准确-根据MDN的描述:

navigator.onLine只会在机器未连接到局域网或路由器时返回false,其他情况下均返回true。

也就是说,机器连接上路由器后,即使这个路由器没联通网络,navigator.onLine仍然返回true。

可以用jQuery中的ajax超时判断:

$.ajaxSetup({

    timeout: 1, // 1秒超时

    error: function(request, status, maybe_an_exception_object) {

        if(status == 'timeout')

            alert("网断了")

    }

})

代码如下:

var EventUtil = {

addHandler: function (element, type, handler) {

if (element.addEventListener) {

element.addEventListener(type, handler, false)

} else if (element.attachEvent) {

element.attachEvent("on" + type, handler)

} else {

element["on" + type] = handler

}

},

removeHandler: function (element, type, handler) {

if (element.removeEventListener) {

element.removeEventListener(type, handler, false)

} else if (element.detachEvent) {

element.detachEvent("on" + type, handler)

} else {

element["on" + type] = null

}

}

}

var dom = document.createElement('img')

dom.style = 'display:none'

dom.src = 'http://www.baidu.com/img/bdlogo.gif'

dom.id = 'map_img'

EventUtil.addHandler(dom, 'error', function(){

alert('你的电脑没有链接网络,连接上网络后才能打开地图!')

})

document.body.appendChild(dom)