判斷網絡問題
阿新 • • 發佈:2018-02-02
如果 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("您已處於離線狀態"); });
判斷網絡問題