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使用指南之base.js
Jan 10 Javascript
jquery动态增加text元素以及删除文本内容实例代码
Jul 01 Javascript
优化Jquery,提升网页加载速度
Nov 14 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
理解javascript异步编程
Jan 27 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
JS+CSS实现网页加载中的动画效果
Oct 27 Javascript
Node.js的进程管理的深入理解
Jan 09 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
Jun 11 Javascript
使用react-virtualized实现图片动态高度长列表的问题
May 28 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
IE bug table元素的innerHTML
2010/01/11 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python的concat等多种用法详解
2018/11/28 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python os.fork() 循环输出方法
2019/08/08 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
泰国在线书店:SE-ED
2020/06/21 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
static关键字的用法
2013/10/07 面试题
计算机本科生自荐信
2013/10/15 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
房产公证书范本
2014/04/10 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
刑事法律意见书
2015/06/04 职场文书
感谢信
2019/04/11 职场文书
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS