通过Javascript在浏览器中选择Android版本
Pick up the Android version in the browser by Javascript
我正在构建一个web应用程序,并希望在3.0版本的Android设备上禁用过渡效果。
在浏览器中是否有通过Javascript获取Android版本号的方法?如果有,那是怎么回事?
function getAndroidVersion(ua) {
ua = (ua || navigator.userAgent).toLowerCase();
var match = ua.match(/android's([0-9'.]*)/i);
return match ? match[1] : undefined;
};
getAndroidVersion(); //"4.2.1"
parseInt(getAndroidVersion(), 10); //4
parseFloat(getAndroidVersion()); //4.2
使用下面的代码获得2位数版本的Android
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, like Gecko) Version/4.0 Mobile Safari/533.1
将返回Android版本= 2.2
我不能评论,因为我没有足够的代表…只是想补充一下,我必须将neiker的代码更改为
var match = ua.match(/Android's([0-9'.]*)/i);
使其不区分大小写,因为Galaxy S3在其用户代理中返回"android"而不是android
您可以查看这里描述的用户代理字符串- window.navigator.userAgent
: https://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版本号
摩托罗拉的播放器用户代理可以有以下内容:
Linux;Android ; Release/4.1.2
所以,我不得不开始使用以下正则表达式:
[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;
}
}
我做了这个函数,并在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;
}
这很简单,首先,搜索单词"android"。如果没有找到,返回0(不是Android用户代理)。然后搜索标志版本结束的"android"位置后的第一个";"。一旦获得这些位置,'slice'隔离版本号('+8'删除最终结果中的单词"android"),然后返回。
如果有人发现任何缺陷,将很高兴分享。
最好先检查设备是否为android,因为Windows mobile可以在其用户代理中安装android。
的例子:Mozilla/5.0 (Windows Phone 10.0;Android 4.2.1;准备,)/(KHTML, like Gecko) Chrome/Mobile Safari/Edge/.
这里是检查它的方法检测iOS/Android操作系统
1- Windows phone引入了一个假的"android"用户代理,所以这个处理它
2-正如@andy指出的,有一些模型采用这种格式:Android/#.##
3-可以使用/i标志表示不区分大小写
4-这段代码给你返回NaN时,它不是android和版本作为一个float时,它是。如果你发现更多的假安卓手机,你只需要添加这样的字符串:(?: windows phone |假电话|安卓 ...........
alert( parseFloat(navigator.userAgent.match(/.*?(?:windows phone|android'D+([0-9'.]*))|()/i)[1]) );
- JavaScript 触发器事件在 Android 上选择文本
- JavaScript/HTML5音频:在Android Chrome中播放用户通过文件选择器加载的mp3文件
- webview日期选择器可以在android模拟器中工作,但不能在设备上工作
- Android在触摸选择时获取选定的文本
- Cordova/Phonegap选择框在Android上的软触摸上无法打开
- jquery时间选择器在phonegap android中不工作
- 可怕的选择不适用于Android浏览器
- 我可以在使用phonegap的Android应用程序中使用目录选择器吗
- 如何在android webview中为所有版本自定义选择自定义栏
- 在哪里可以找到android 4.2.2闹钟中的时间选择器的Javascript版本
- React Native Android日期和时间选择器没有;不起作用
- 如何使用react native为android创建日期选择器
- 在Android上使用tel: Hyperlinks <4选择
- Android 4.1.1/4.1.2日期选择器Galaxy S3
- Highcharts图例选择在Android WebView中双触发
- Dojox.Mobile.ComboBox在Android上不响应选择
- 从Android WebView的HTML下拉菜单中选择一个项目
- android上的样式选择触发默认事件
- 通过Javascript在浏览器中选择Android版本
- 在Chrome/Android上,不能取消选择多个选择字段中的所有选项