js 判断手机操作系统(ios或Android)

关于这个问题,开始我是在网上找到了以下的判断方法:

var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // Android
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios
if (isAndroid) {
  alert("Android系统");
}
if (isIOS) {
  alert("ios系统");
}


但是,后来在测试中发现问题了,在小米浏览器中的结果居然是 ios系统。

现在把以上代码中的 变量“u” 打印出来看一下,再使用小米浏览器、其它安卓浏览器和苹果浏览器作对比:

js 判断手机操作系统(ios或Android)_第1张图片 小米浏览器

 

js 判断手机操作系统(ios或Android)_第2张图片 其它安卓浏览器

 

js 判断手机操作系统(ios或Android)_第3张图片 苹果浏览器

 

果然小米浏览器的结果是iPhone,不过小米浏览器中会存在“XiaoMi”的字段,可以用来做判断,代码在最后会有。

我再百度一下,原来小米的miui浏览器是可以切换浏览器标识的,作为一个果粉还真不清楚这些小米的黑科技,切换操作如下:

1. 点开浏览器的菜单,然后点击“设置”

js 判断手机操作系统(ios或Android)_第4张图片

2. 点击“高级设置”

js 判断手机操作系统(ios或Android)_第5张图片

3. 点击“浏览器标识”

js 判断手机操作系统(ios或Android)_第6张图片

4. 选择“默认”
js 判断手机操作系统(ios或Android)_第7张图片

 

那么,我就针对这个问题修改了一下判断的方法:

var u = navigator.userAgent, app = navigator.appVersion;
var isXiaomi = u.indexOf('XiaoMi') > -1; // 小米手机
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 其它安卓
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios
if (isAndroid) {
  alert("Android系统");
}else if (isIOS) {
  if(isXiaomi) {
    alert("您的浏览器标识为iPhone,请前往设置:“设置”->“高级设置”->“浏览器标识=默认”");
  }else {
    alert("ios系统");
  }
}

 

你可能感兴趣的:(···,JavaScript,前端开发)