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 相关文章推荐
JavaScript 学习笔记二 字符串拼接
Mar 28 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
jQuery 表单验证扩展(四)
Oct 20 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
利用js-cookie实现前端设置缓存数据定时失效
Jun 18 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 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
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
javascript window对象属性整理
2009/10/24 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python list与NumPy array 区分详解
2019/11/06 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
python扫描线填充算法详解
2020/02/19 Python
Pycharm修改python路径过程图解
2020/05/22 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
Python之字典对象的几种创建方法
2020/09/30 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
销售找工作求职信
2013/12/20 职场文书
党员承诺书格式
2014/05/21 职场文书
经营理念标语
2014/06/21 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL