通过Javascript在浏览器中选择Android版本

时间:2011-08-25 02:47:03

标签: javascript android browser android-api-levels

我正在制作一个网络应用,并希望在3.0版本的Android设备上禁用转场效果。

无论如何在浏览器中通过Javascript获取Android版本号?如果是这样的话?

9 个答案:

答案 0 :(得分:82)

使用以下代码获取Android的2位数版本

var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
  var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8)); 
  if (androidversion < 2.3)
  {
      // do whatever
  }
}

例如

  

Mozilla / 5.0(Linux; U; Android 2.2.1; fr-ch; A43 Build / FROYO)AppleWebKit / 533.1(KHTML,类似Gecko)版本/ 4.0 Mobile Safari / 533.1

会回来 Android版本= 2.2

答案 1 :(得分:75)

function getAndroidVersion(ua) {
    ua = (ua || navigator.userAgent).toLowerCase(); 
    var match = ua.match(/android\s([0-9\.]*)/);
    return match ? match[1] : undefined;
};

getAndroidVersion(); //"4.2.1"
parseInt(getAndroidVersion(), 10); //4
parseFloat(getAndroidVersion()); //4.2

答案 2 :(得分:8)

您可以查看此处描述的用户代理字符串window.navigator.userAgenthttps://developer.mozilla.org/en/DOM/window.navigator.userAgent

如果您真正想要检测的是您是否拥有支持特定功能的浏览器版本,那么使用功能检测而不是浏览器版本检测几乎总是更好。 modernizr是一个巨大的特征检测代码基础,您既可以使用它,也可以从中借用一个特定的部分,或者只是了解一般技术的工作原理。

当我谷歌时,我会看到Android的用户代理字符串:

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

/Android\s+([\d\.]+)/window.navigator.userAgent的正则表达式会获取Android版本号。

答案 3 :(得分:6)

我无法发表评论,因为我没有足够的代表...... 只是想补充说我必须将neiker的代码更改为

var match = ua.match(/Android\s([0-9\.]*)/i);

使其不区分大小写,因为Galaxy S3正在返回&#34; android&#34;而不是用户代理中的Android

答案 4 :(得分:2)

摩托罗拉的玩家用户代理可以拥有以下内容:

Linux;Android ; Release/4.1.2

所以,我必须开始使用以下正则表达式:

[a|A]ndroid[^\d]*([\d[_|.]]+\d)

答案 5 :(得分:2)

此代码从useragent检查完整版Android。

var test = LowerThanAndroidVersion('4.4');
if (test) {
    alert('lower than android 4.4')
} else if (test == undefined) {
    alert('no android')
} else {
    alert('android 4.4 or higher');
}    

function LowerThanAndroidVersion(testversion) {
    //var useragent = 'Mozilla/5.0 (Linux; U; Android 4.3.1; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30';
    var useragent = navigator.userAgent;
    var androidpoint = useragent.indexOf('Android');
    if (androidpoint >= 0) {
        var rest = useragent.substring(androidpoint + 8, useragent.length);
        var version = rest.substring(0, rest.indexOf(';'));
        return (version < testversion) ? true : false;
    }
}

答案 6 :(得分:2)

我在不同的浏览器和设备中在Android 2.6.3,4.2.2。,6.0.1中创建了这个功能并且运行良好。我认为这可以替代。

function check_android_version()
{
    var ua = navigator.userAgent; 
    ua = ua.toLowerCase();

    var and_pos = ua.search("android");
    if(and_pos == -1)
        return 0; //not android

    var pv_pos = ua.indexOf(";", and_pos);
    var versao = ua.slice(and_pos+8, pv_pos);

    return versao;
}

这很简单,首先,搜索单词&#34; android&#34;。如果未找到,则返回0(不是Android用户代理)。然后搜索第一个&#39 ;;&#39;在&#34; android&#34;之后标志着版本结束的位置。一旦获得这些职位,&#39;切片&#39;隔离版本号(&#39; + 8&#39;删除单词&#34; android&#34;最终结果)然后返回。

如果有人发现任何缺陷,分享会很高兴。

答案 7 :(得分:1)

最好首先检查设备是否为Android,因为Windows mobile可以在其用户代理中安装Android。

实施例: Mozilla / 5.0(Windows Phone 10.0; Android 4.2.1 ;;)AppleWebKit /(KHTML,如Gecko)Chrome / Mobile Safari / Edge /。

这是检查它的方法 Detecting iOS / Android Operating system

答案 8 :(得分:1)

1- Windows Phone引入了伪造的“ android”用户代理,因此对此进行了处理
2-正如@andy所指出的,有些模型采用这种格式:Android /#.##
3-您可以使用标志/ i区分大小写
4-这段代码为您返回NaN(不是Android),版本为float。
5-如果您发现更多伪造的android手机,则只需添加如下字符串:(?: windows phone | fake phone | android ...........

alert( parseFloat(navigator.userAgent.match(/.*?(?:windows phone|android\D+([0-9\.]*))|()/i)[1]) );