js判断客户端是iOS还是Android等移动终端的方法


Posted in Javascript onDecember 11, 2013

判断原理:

JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。

浏览器类型

⑴浏览器特有属性
⑵根据userAgent
浏览器版本
⑴根据userAgent

对于手机浏览器判断

1.如何判断是否为移动终端 利用正则match,
匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile
安卓qq浏览器HD版 只有AppleWebKit

2手机语言版本的判断
使用navigator.browserLanguage 便可得出windows phone语言版本,
当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出 navigator.language
CODE:

<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('Linux') > -1, //android终端或uc浏览器 
iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器 
iPad: u.indexOf('iPad') > -1, //是否iPad 
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 
}; 
}(), 
language:(navigator.browserLanguage || navigator.language).toLowerCase() 
} 
document.writeln("语言版本: "+browser.language); 
document.writeln(" 是否为移动终端: "+browser.versions.mobile); 
document.writeln(" ios终端: "+browser.versions.ios); 
document.writeln(" android终端: "+browser.versions.android); 
document.writeln(" 是否为iPhone: "+browser.versions.iPhone); 
document.writeln(" 是否iPad: "+browser.versions.iPad); 
document.writeln(navigator.userAgent); 
</script>

比较特别的地方
UC浏览器没有安卓报头,只返回:linux ,这里粗略的根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)
安卓QQ浏览器HD版检测的结果是:mac, Safari
Javascript 相关文章推荐
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
javascript中的array数组使用技巧
Jan 31 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
Jquery之Bind方法参数传递与接收的三种方法
Jun 24 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
js删除对象中的某一个字段的方法实现
Jan 11 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
Dec 11 #Javascript
按下Enter焦点移至下一个控件的实现js代码
Dec 11 #Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 #Javascript
js的匿名函数使用介绍
Dec 11 #Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 #Javascript
JavaScript Math.ceil() 函数使用介绍
Dec 11 #Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 #Javascript
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
PHP 图片水印类代码
2012/08/27 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
营业员个人总结的自我评价
2013/10/25 职场文书
超市创业计划书
2014/04/24 职场文书
工地安全质量标语
2014/06/07 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
烈士陵园观后感
2015/06/08 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android