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 相关文章推荐
IFrame跨域高度自适应实现代码
Aug 16 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
基于substring()和substr()的使用以及区别(实例讲解)
Dec 28 Javascript
Vue 中axios配置实例详解
Jul 27 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
JavaScript回调函数callback用法解析
Jan 14 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不用正则采集速度探究总结
2008/03/24 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
经理助理岗位职责
2014/03/05 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python