1. 程式人生 > >判斷網絡問題

判斷網絡問題

如果 conn tor 微信 navig tlist lan style blank

在移動項目,有時候需要檢測當前的狀態是否是在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("您已處於離線狀態");
            });

判斷網絡問題