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 相关文章推荐
jquery下将选择的checkbox的id组成字符串的方法
Nov 28 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
Jul 06 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 Javascript
jQuery实现的简单百分比进度条效果示例
Aug 01 Javascript
js中删除数组中的某一元素实例(无下标时)
Feb 28 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
Oct 12 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 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实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
javascript eval和JSON之间的联系
2009/12/31 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python raise的基本使用
2020/09/10 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
工程造价专业大学生自荐信
2013/10/01 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
办公室文员岗位职责
2015/02/04 职场文书
医院志愿者活动总结
2015/05/06 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS