前言:
上午有一个移动端的项目负责人问我,在ios系统上样式出现问题,因为内核原因,我改来改去,在ios弄好了,但在安卓有问题了,突然想到了一种办法,既然ios是一种机型,安卓是一种机型,可以检测用户的手机是哪一种机型,进而加载哪种方法。于是乎,上网查阅了一下,原理:通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端。经测试,有效。总结转载如下:
正文:
第一种:
<script type="text/javascript"> var u = navigator.userAgent; var isAndroid = u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 if(isAndroid){ //安卓机型 // 代码块 }else if(isiOS){ // ios机型 // 代码块 } </script>
第二种:
<script type="text/javascript"> //判断访问终端 var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf(‘Trident‘) > -1, //IE内核 presto: u.indexOf(‘Presto‘) > -1, //opera内核 webKit: u.indexOf(‘AppleWebKit‘) > -1, //苹果、谷歌内核 gecko: u.indexOf(‘Gecko‘) > -1 && u.indexOf(‘KHTML‘) == -1,//火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1, //android终端 iPhone: u.indexOf(‘iPhone‘) > -1 , //是否为iPhone或者QQHD浏览器 iPad: u.indexOf(‘iPad‘) > -1, //是否iPad webApp: u.indexOf(‘Safari‘) == -1, //是否web应该程序,没有头部与底部 weixin: u.indexOf(‘MicroMessenger‘) > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sQQ/i) == " qq" //是否QQ }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } </script>
//判断是否IE内核 if(browser.versions.ios){ // 是否为ios } //判断是否webKit内核 if(browser.versions.android){ // 是否为安卓 }
第三种
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // ios } else if (/(Android)/i.test(navigator.userAgent)) { // 安卓 }