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 日期计算算法
Sep 11 Javascript
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
Highcharts使用简例及异步动态读取数据
Dec 30 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
Vue.directive 实现元素scroll逻辑复用
Nov 29 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP面向对象精要总结
2014/11/07 PHP
php压缩文件夹最新版
2018/07/18 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
简单讲解Python中的闭包
2015/08/11 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
python super用法及原理详解
2020/01/20 Python
什么是Python包的循环导入
2020/09/08 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
工地门卫岗位职责范本
2014/07/01 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
论语读书笔记
2015/06/26 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
基于Python实现股票收益率分析
2022/04/02 Python
python创建字典及相关管理操作
2022/04/13 Python