js判断手机机型,是否在华为、iphone、小米、三星打开

判断打开目前的是什么手机品牌

要在业务里知道是页面通过什么平台打开的,在前端使用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 BuildMi Note 2 Build这样的,所以要匹配mi\s,空格必须加上。如果只匹配mi的话,用户通过小米浏览器或者其他有带有mi字符的都会认为是小米手机,例如:Microsoft

三星手机的品牌判断要使用sm-,因为三星机型都是SM-J3109SM-G9650 BuildSM-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
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值