轉:
在跨平台,各種瀏覽器,移動設備兼容的時候,經常要根據設備、瀏覽器做特定調整,所以判斷設備和瀏覽器的工作,經常會用到,這里做一下總結。
有關瀏覽器類型的信息都藏在USER-AGENT里面,首先讀取navigator.userAgent里面的信息,為了方便利用toLowerCase方法轉成小寫的形式。然后用MATCH方法進行匹配版本信息,這里提供了多個版本的測試信息,可以用來做后續代碼的接口。
1) 判斷移動端設備,區分android,iphone,ipad和其它
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/android/i)) == "android") {
alert("android");
}
if(ua.match(/iPhone/i)) == "iPhone") {
alert("iPhone");
}
if(ua.match(/iPad/i)) == "iPad") {
alert("iPad");
}
2) 判斷移動端用的是不是特定類型的瀏覽器,比如新浪weibo客戶端內置瀏覽器,qq客戶端內置瀏覽器(而非qq瀏覽器),微信內置瀏覽器
(並且區分版本是否大於等於6.0.2)(特定類型瀏覽器可能會存在,無法下載,無法跳轉和自己的客戶端app的特定協議等等,所以需要區分)
(由於微信在6.0.2的時候做了新的策略,使得微信的分享功能在新版本變得不一樣,為了兼容新舊版本,這里做了區分操作)
新浪weibo客戶端返回1,qq客戶端返回2,微信小於6.0.2版本返回3,微信大於等於6.0.2版本返回4,其它返回0
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/weibo/i) == "weibo") {
return 1;
} else if(ua.indexOf('qq/') != -1) {
return 2;
} else if(ua.match(/MicroMessenger/i) == "micromessenger") {
var v_weixin = ua.split('micromessenger')[1];
v_weixin = v_weixin.substring(1, 6);
v_weixin = v_weixin.split(' ')[0];
if(v_weixin.split('.').length == 2) {
v_weixin = v_weixin + '.0';
}
if(v_weixin < '6.0.2') {
return 3;
} else {
return 4;
}
} else {
return 0;
}
3)最后,把他們統一起來判斷登陸端是pc還是手機
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
alert("您是手機登錄");
} else {
alert("您是電腦登錄");
}
---------------------
作者:H小志
來源:CSDN
原文:https://blog.csdn.net/xiaozhi_2016/article/details/52288556
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!