关于js判断有没有网的方法

首先,在项目中遇到一个问题,就是在点击一个a标签的时候判断电脑有没有网,如果有网就跳转页面,没网就弹出一个提示消息

在百度上查了一番,发现好多种方法。下面一一进行列举:

// 1.点击某一事件时判断有没有连网(看了好多说兼容IE8,但是我测了好多遍,就是不兼容IE8,如果做的项目不用兼容IE8,用这个方法还是蛮好的)
      

if (navigator.onLine) {
    console.log("有网");
} else {
    console.log("没网");
}

为了兼容IE8,我想了一个办法,网上查找了js判断浏览器的方法,判断如果是ie8的时候,通过ajax请求来判断有没有网,其他情况下用1中的方法判断,下面是项目中的代码

$("#infoBox>p>span>a").each(function(){
                var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
                var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
               //this是上面获取的a标签

                   if ($(this).text()=="哈哈哈"){
                    $(this).attr("href","javascript:void(0)");
                    $(this).on("click",function () {
                        if(isIE) {
                            var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
                            reIE.test(userAgent);
                            var fIEVersion = parseFloat(RegExp["$1"]);
                            if(fIEVersion == 8) {
                                $.ajax({
                                    type:'post',
                                    url:"",
                                    data: {},
                                    dataType:"json",
                                    success:function () {
                                        location.href = index.html;
                                    },
                                    error:function () {
                                        $('#dialog').show();
                                        setTimeout(function() {
                                            $('#dialog').hide();
                                        }, 3000);
                                    }
                                })
                            }
                        }
                        else{
                            if (navigator.onLine) {
                                // 有网工作
                                location.href = index.html;
                            } else {
                                //离线工作
                                $('#dialog').show();
                                setTimeout(function() {
                                    $('#dialog').hide();
                                }, 3000);
                            }
                        }
                    })
                }
            });

// 2.网络连网和断网切换时触发的事件(一般只有连网和断网的时候才会触发的事件)
        

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;
            }
            }
            };
            EventUtil.addHandler(window, "online", function () {
            alert("Online");
            });
            EventUtil.addHandler(window, "offline", function () {
            alert("Offline");
            });

            if(window.navigator.onLine==true) {
         alert("首次 -- 已连接");
         }else {
         alert("首次 -- 未连接");
         }
         window.addEventListener("online", online, false);
         window.addEventListener("offline", offline, false);
         function online() {  alert("重新连接");  }
         function offline() {  alert("连接断开");  }

//3.通过图片是否加载成功来判断有没有网,如果加载成功,就有网,不成功就没网,为了安全起见,不推荐使用这个(通过点击事件显示有没有网)

<img id="img-test" style="display:none;" onerror="getImgError()"/>
 <button id="btn-test">check status</button>

$("#btn-test").click(function(){
          var i = new Image();
            // console.log(i);
            i.src = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png?t=' + Date.parse(new Date());
            i.onload = function() {
                alert('有网');
            };
            i.onerror = function() {
                alert('没网');
            };
            
         });

//4. 和3差不多,页面加载的时候显示有没有网
      

  var i = new Image();
        console.log(i);
        i.src = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png?t=' + Date.parse(new Date());
        i.onload = function() {
            alert('有网');
        };
        i.onerror = function() {
            alert('没网');
        };

//5.通过ajax请求判断有没有网,如果ajax请求写的都是对的,那么请求成功既有网,请求失败既没网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值