判断ios设备

最近app下载那边经常反馈使用ipad无法下载的问题,之前想来也是简单,从百度上搜索一下就有很多答案,但是现在才知道是不正确的。所以记录想来去修正

以下是百度出来最多的js判断设备的方法:

使用方法:

//判断是否ios 
if(browser.versions.ios){ alert("is ios"); }
//判断是否iphone 
if(browser.versions.iPhone){ alert("is iPhone"); }
//判断是否移动端
if(browser.versions.mobile||browser.versions.android||browser.versions.ios){ alert("移动端"); }

这些在网上都是大同小异的,这里只对ios进行修正

这个方法在

ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端

这个写法是不正确的,但是我有不知道为什么有这么多人这么写

我来贴一下苹果手机和ipad打印navigator.userAgent里面的信息

苹果手机:

Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1

这个内容使用上面的正则方法是能匹配正确的,所以能识别出是ios设备

 

iPad:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15

明显看出来,括号中Mac OS X前面并没有的CPU,这样自然是无法匹配成功。

也许以前这个判断方法是正确的,但是从我现在看来,这个判断ios设备的方法已经不行了

修正:

ios: u.indexOf('Mac OS X') > -1, //ios终端

 

方法里面也有单独写判断iPad的,从上面看来这个判断无法实现。

 iPad: u.indexOf('iPad') > -1, //是否iPad

因为打印的信息中没有iPad相关字符串,所以这个判定无法识别是iPad设备

暂时这样处理,之后又更好的方法再进行替换。百度的未必是对的,要自己多多去查看,校对,才能万无一失

 

你可能感兴趣的:(JavaScript)