判断网络问题

Posted 微语123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断网络问题相关的知识,希望对你有一定的参考价值。

移动项目,有时候需要检测当前的状态是否是在wifi网络下,那js可以检测出这种状态吗?

我们可以试下用window.navigator.connection来检测,另外微信6.0版本以上,UA有个NetType,6.0版本以下,可以用微信私有接口WeixinJSBridge:

1. 详细判断网络

var wifi = true;
    var ua = window.navigator.userAgent;
    var con = window.navigator.connection;
    // 如果是微信
    if(/MicroMessenger/.test(ua)){
        // 如果是微信6.0以上版本,用UA来判断
        if(/NetType/.test(ua)){
            if(ua.match(/NetType\/(\S*)$/)[1] != ‘WIFI‘){
                wifi = false;
            }
        // 如果是微信6.0以下版本,调用微信私有接口WeixinJSBridge
        }else{
            document.addEventListener("WeixinJSBridgeReady",function onBridgeReady(){
                WeixinJSBridge.invoke(‘getNetworkType‘,{},function(e){
                    if(e.err_msg != "network_type:wifi"){
                        wifi = false;
                    }
                });
            });
        }
    // 如果支持navigator.connection
    }else if(con){
        var network = con.type;
        if(network != "wifi" && network != "2" && network != "unknown"){  // unknown是为了兼容Chrome Canary
            wifi = false;
        }
    }
window.networkWIFI = wifi;

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("您已处于离线状态");
            });

 

以上是关于判断网络问题的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

javascript常用代码片段

如何在 Android Volley 中判断 TLS 版本

如何判断片段在 N​​avigationDrawer 中何时不可见

js简洁代码片段

片段和活动之间的核心区别是啥?哪些代码可以写成片段?