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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
JavaScript 变量命名规则
Sep 23 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
jquery 实现返回顶部功能
Nov 17 Javascript
学习掌握JavaScript中this的使用技巧
Aug 29 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
jquery实现上传图片功能
Jun 29 jQuery
vue实现滑动解锁功能
Mar 03 Vue.js
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
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
python实现粒子群算法
2020/10/15 Python
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
新学期开学寄语
2014/01/18 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
关于幸福的感言
2015/08/03 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB
JS实现九宫格拼图游戏
2022/06/28 Javascript