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 相关文章推荐
用js自动判断浏览器分辨率的代码
Jan 28 Javascript
javascript中最常用的继承模式 组合继承
Aug 12 Javascript
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 Javascript
js获取php变量的实现代码
Aug 10 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
JavaScript字符串对象
Jan 14 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
解决vue移动端适配问题
Dec 12 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
让浏览器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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Python之web模板应用
2017/12/26 Python
python reverse反转部分数组的实例
2018/12/13 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
Django工程的分层结构详解
2019/07/18 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python的历史与优缺点整理
2020/05/26 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
房屋改造计划书
2014/01/10 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
JS的深浅复制详细
2021/10/16 Javascript