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 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
如何用angularjs制作一个完整的表格
Jan 21 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
JS检测移动端横竖屏的代码
May 30 Javascript
SWFUpload多文件上传及文件个数限制的方法
May 31 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
JS变量及其作用域
Mar 29 Javascript
webpack实用小功能介绍
Jan 02 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 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
PHP中date()日期函数有关参数整理
2011/07/19 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP正则验证Email的方法
2015/06/15 PHP
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
javascript中clone对象详解
2014/12/03 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
jquery密码强度校验
2015/12/02 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
详解angular element()方法使用
2017/04/08 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
2019年.net常见面试问题
2012/02/12 面试题
一份婚庆公司创业计划书
2014/01/11 职场文书
求职自荐信的格式
2014/04/07 职场文书
工作所在部门证明
2014/09/21 职场文书
2014年卫生工作总结
2014/11/27 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
被委托人身份证明
2015/08/07 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python