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控制输入框只能输入数值的小例子
Mar 20 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
Dec 21 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
JS实现HTML页面中动态显示当前时间完整示例
Jul 30 Javascript
解决layer弹出层msg的文字不显示的问题
Sep 11 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 Javascript
处理canvas绘制图片模糊问题
May 11 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 缓存实现代码及详细注释
2010/05/16 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
python生成IP段的方法
2015/07/07 Python
django允许外部访问的实例讲解
2018/05/14 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Python数据存储之 h5py详解
2019/12/26 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
音乐幼师求职信
2014/07/09 职场文书
房屋转让协议书
2014/10/18 职场文书
数学教师个人总结
2015/02/06 职场文书
运动会200米广播稿
2015/08/19 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers