判断打开目前的是什么手机品牌
要在业务里知道是页面通过什么平台打开的,在前端使用userAgent来进行判断。以下正文涉及3类:主流的手机品牌判断方法、是否在微信打开、是否在PC或Pad打开。
判断业务是否是 iphone、华为、小米、oppo、view、三星 打开
function judgeBrand(sUserAgent) {
var isIphone = sUserAgent.match(/iphone/i) == "iphone";
var isHuawei = sUserAgent.match(/huawei/i) == "huawei";
var isHonor = sUserAgent.match(/honor/i) == "honor";
var isOppo = sUserAgent.match(/oppo/i) == "oppo";
var isOppoR15 = sUserAgent.match(/pacm00/i) == "pacm00";
var isVivo = sUserAgent.match(/vivo/i) == "vivo";
var isXiaomi = sUserAgent.match(/mi\s/i) == "mi ";
var isXiaomi2s = sUserAgent.match(/mix\s/i) == "mix ";
var isRedmi = sUserAgent.match(/redmi/i) == "redmi";
var isSamsung = sUserAgent.match(/sm-/i) == "sm-";
if (isIphone) {
return 'iphone';
} else if (isHuawei || isHonor) {
return 'huawei';
} else if (isOppo || isOppoR15) {
return 'oppo';
} else if (isVivo) {
return 'vivo';
} else if (isXiaomi || isRedmi || isXiaomi2s) {
return 'xiaomi';
} else if (isSamsung) {
return 'samsung';
} else {
return 'default';
}
}
var brand = judgeBrand(navigator.userAgent.toLowerCase());
小米手机判断比较特殊,小米普通机型拿到的ua都类似于MI 6 Build、Mi Note 2 Build这样的,所以要匹配mi\s,空格必须加上。如果只匹配mi的话,用户通过小米浏览器或者其他有带有mi字符的都会认为是小米手机,例如:Microsoft
三星手机的品牌判断要使用sm-,因为三星机型都是SM-J3109、SM-G9650 Build、SM-N9500 Build这样的。如果只匹配sm,就会匹配到某些版本锤子手机。
以下网站收集了市面目前主流品牌的userAgent,各品牌的各机型的userAgent在里面能找到
手机品牌userAgent库 http://www.fynas.com/ua
判断业务是否是 微信 打开
function isWeChat() {
var ua = navigator.userAgent.toLowerCase();
return (/micromessenger/.test(ua)) ? true : false;
}
判断是在什么平台打开 pad 、pc 、mobile phone
function checkAgent() {
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 (!(bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM || bIsIpad)) {
return 'pc';
} else if(bIsIpad){
return 'pad';
}else{
return 'phone';
}
}
注:以上functioncheckAgent,在使用华为P20 Pro 默认浏览器打开时,会被误判为PC。因为在华为P20 Pro的默认浏览器上,并没有重写userAgent,拿到的userAgent跟在PC上拿到的一样。目前只发现华为机型的默认浏览器有这个错误。
参考资料
手机品牌userAgent库 http://www.fynas.com/ua