通过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'}