通过Javascript在浏览器中获取Android版本

我正在构build一个Web应用程序,并希望在3.0版本的Android设备上禁用转换效果。

有没有在浏览器中通过Javascript获取Android版本号? 如果这样怎么样?

function getAndroidVersion(ua) { ua = (ua || navigator.userAgent).toLowerCase(); var match = ua.match(/android\s([0-9\.]*)/); return match ? match[1] : false; }; getAndroidVersion(); //"4.2.1" parseInt(getAndroidVersion(), 10); //4 parseFloat(getAndroidVersion()); //4.2 

使用下面的代码来获取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

你可以看看这里描述的用户代理string – window.navigator.userAgent : https : //developer.mozilla.org/en/DOM/window.navigator.userAgent

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

当我谷歌,我看到这样的Android用户代理string:

 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 

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

我不能评论,因为我没有足够的代表…只是想补充说,我不得不改变neiker的代码

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

使其不区分大小写,因为Galaxy S3在用户代理中返回“android”而不是Android

摩托罗拉的玩家用户代理可以有以下几点:

 Linux;Android ; Release/4.1.2 

所以,我不得不开始使用下面的正则expression式:

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

这段代码从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; } } 

我做了这个function,在Android 2.6.3,4.2.2,6.0.1在不同的浏览器和设备上工作得很好。 我认为这可以成为一种select。

 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; } 

这很简单,首先search单词“android”。 如果找不到,则返回0(不是Android用户代理)。 然后search第一个';' 之后的“android”位置标志着版本的结束。 一旦获得这些位置,“切片”将版本号隔离(即“+8”删除最终结果的“安卓”一词),然后返回。

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

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

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

这里是检查它的方法检测iOS / Android操作系统

如前所述,Android版本通常有两到三个数字,最好是整个版本。 有很多边缘情况下检测您的平台/操作系统版本,所以我写了这个检测操作系统版本的组件,以集中它。

随意导入它并使用如下例所示:

 detectOsVersion.get() => {os: 'Android', version: '4.2.2'} detectOsVersion.get() => {os: 'iOS', version: '5.1.1'} detectOsVersion.get() => {os: 'BlackBerry', version: '7.1.0.346'} detectOsVersion.get() => {os: 'Windows', version: '8.1'} detectOsVersion.get() => {os: 'Mac', version: '10.7.1'}