快捷搜索:   nginx

JS获取手机型号和系统

想要通过js获取手机的一些基本参数,就要使用到navigator.userAgent,通过我们可以获取到浏览器的一些基本信息。如果想在页面中看到navigator.userAgent内容,我们可以使用document.write(navigator.userAgent);打印到页面上,可以更清晰的看到具体内容。

1、下面是我打印的一些手机中的userAgent内容:


1、iphone6 plus   

Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27  

  

iphone7 plus  

Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304  

  

2、魅族  

Mozilla/5.0 (Linux; Android 5.1; m1 metal Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.127 Mobile Safari/537.36  

  

3、三星  

Mozilla/5.0 (Linux; Android 6.0.1; SM-A8000 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36  

  

4、小米  

Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 4X Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36  


从上面我们可以看出iphone的里面都含有iPhone字段,系统版本字段为上面标红的地方。2、3、4是其他几款主流Android手机的userAgent内容,仔细观察不难发现Android 5.1等就是系统版本。而蓝色的就是手机型号。至于其他内容,包含浏览器版本等,这里不做解释。


2、在网上查了下有木有现成的js能直接实现此功能,找到了一个mobile-detect.js。基本可以实现我们需要的参数,下载地址:

https://github.com/hgoebl/mobile-detect.js/

文档地址:

http://hgoebl.github.io/mobile-detect.js/doc/MobileDetect.html

使用方法:


var md = new MobileDetect(  

    'Mozilla/5.0 (Linux; U; Android 4.0.3; en-in; SonyEricssonMT11i' +  

    ' Build/4.1.A.0.562) AppleWebKit/534.30 (KHTML, like Gecko)' +  

    ' Version/4.0 Mobile Safari/534.30');  

  

// more typically we would instantiate with 'window.navigator.userAgent'  

// as user-agent; this string literal is only for better understanding  

  

console.log( md.mobile() );          // 'Sony'  

console.log( md.phone() );           // 'Sony'  

console.log( md.tablet() );          // null  

console.log( md.userAgent() );       // 'Safari'  

console.log( md.os() );              // 'AndroidOS'  

console.log( md.is('iPhone') );      // false  

console.log( md.is('bot') );         // false  

console.log( md.version('Webkit') );         // 534.3  

console.log( md.versionStr('Build') );       // '4.1.A.0.562'  

console.log( md.match('playstation|xbox') ); // false  


使用过程中ios没有什么问题,想获取的都可以获取到,不过Android并不是都能获取到。所以又对Android的做了单独处理。发现Android手机型号后面都带了一段


Build/...。所以就以此做了下单独处理,来获取Android手机型号。下面是具体代码:  



<!DOCTYPE html>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<meta name="viewport"  
    content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">  
<title>JS获取手机型号和系统</title>  
</head>  
<body>  
</body>  
<script src="js/lib/jquery-1.11.1.min.js"></script>  
<script src="js/lib/mobile-detect.min.js"></script>  
<script>  
    //判断数组中是否包含某字符串  
    Array.prototype.contains = function(needle) {  
        for (i in this) {  
            if (this[i].indexOf(needle) > 0)  
                return i;  
        }  
        return -1;  
    }  
  
    var device_type = navigator.userAgent;//获取userAgent信息  
    document.write(device_type);//打印到页面  
    var md = new MobileDetect(device_type);//初始化mobile-detect  
    var os = md.os();//获取系统  
    var model = "";  
    if (os == "iOS") {//ios系统的处理  
        os = md.os() + md.version("iPhone");  
        model = md.mobile();  
    } else if (os == "AndroidOS") {//Android系统的处理  
        os = md.os() + md.version("Android");  
        var sss = device_type.split(";");  
        var i = sss.contains("Build/");  
        if (i > -1) {  
            model = sss[i].substring(0, sss[i].indexOf("Build/"));  
        }  
    }  
    alert(os + "---" + model);//打印系统版本和手机型号  
</script>  
</html>  
</pre><br>  
<br>  
<p></p>  
<pre></pre>  
<pre name="code" class="html"></pre>  
<p></p>  
<p>得到结果:</p>  
<p>iphone       iOS10.21---iPhone</p>  
<p>android      AndroidOS6.01---Redmi Note 4X</p>


                      


顶(3)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论