js识别不同浏览器基于userAgent做判断


Posted in Javascript onJuly 29, 2014

检测浏览器,注意浏览器判断顺序,主要是基于userAgent做判断。

//检测浏览器
var client = function(){
var engine = {
ie:0,
gecko:0,
webkit:0,
khtml:0,
opera:0,
ver:null
};
var browser = {
//浏览器
ie: 0,
firefox: 0,
safari: 0,
konq: 0,
opera: 0,
chrome: 0,
ver:null
};
var ua = navigator.userAgent;
//浏览器检测有顺序
if(window.opera){//opera伪装,所以优先检测
engine.ver = browser.ver = window.opera.version();
engine.opera = browser.opera = parseFloat(engine.ver);
} else if(/AppleWebKit\/(\S+)/.test(ua)){
engine.ver = RegExp["$1"];
engine.webkit = parseFloat(engine.ver);


//确定是 Chrome 还是 Safari
if (/Chrome\/(\S+)/.test(ua)){
browser.ver = RegExp["$1"];
browser.chrome = parseFloat(browser.ver);
} else if (/Version\/(\S+)/.test(ua)){
browser.ver = RegExp["$1"];
browser.safari = parseFloat(browser.ver);
} else {
//近似地确定版本号
var safariVersion = 1;
if (engine.webkit < 100){
safariVersion = 1;
} else if (engine.webkit < 312){
safariVersion = 1.2;
} else if (engine.webkit < 412){
safariVersion = 1.3;
} else {
safariVersion = 2;
}


browser.safari = browser.ver = safariVersion;
}

}else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){
engine.ver = browser.ver = RegExp["$1"];
engine.khtml = browser.konq = parseFloat(engine.ver);
}else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){
engine.ver = RegExp["$1"];
engine.gecko = parseFloat(engine.ver);
//确定是不是 Firefox
if (/Firefox\/(\S+)/.test(ua)){
browser.ver = RegExp["$1"];
browser.firefox = parseFloat(browser.ver);
}
}else if (/MSIE ([^;]+)/.test(ua)){
engine.ver = browser.ver = RegExp["$1"];
engine.ie = browser.ie = parseFloat(engine.ver);
}
return {
engine:engine,
browser: browser
};
}();


//调用

if (client.engine.webkit) { //if it's WebKit 
if (client.browser.chrome){ 
//执行针对 Chrome 的代码 
} else if (client.browser.safari){ 
//执行针对 Safari 的代码 
} 
} else if (client.engine.gecko){ 
if (client.browser.firefox){ 
//执行针对 Firefox 的代码 
} else { 
//执行针对其他 Gecko 浏览器的代码 
} 
}
Javascript 相关文章推荐
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
jquery实现右键菜单插件
Mar 29 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
移动开发之自适应手机屏幕宽度
Nov 23 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 13 Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 Javascript
JavaScript实现五子棋小游戏
Oct 26 Javascript
让浏览器DOM元素最后加载的js方法
Jul 29 #Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 #Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 #Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 #Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 #Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 #Javascript
jquery JSON的解析方式示例介绍
Jul 27 #Javascript
You might like
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
详解PHP归并排序的实现
2016/10/18 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python类定义和类继承详解
2015/05/08 Python
Python 忽略warning的输出方法
2018/10/18 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
详解Python中的测试工具
2019/06/09 Python
python爬虫添加请求头代码实例
2019/12/28 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
keras 读取多标签图像数据方式
2020/06/12 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
vscode调试django项目的方法
2020/08/06 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
学校后勤岗位职责
2014/02/19 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
六年级语文教学反思
2016/03/03 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
Mysql排序的特性详情
2021/11/01 MySQL