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 相关文章推荐
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
js 静态动态成员 and 信息的封装和隐藏
May 29 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
详解javascript传统方法实现异步校验
Jan 22 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
jQuery层次选择器用法示例
Sep 09 Javascript
JS实现的碰撞检测与周期移动完整示例
Sep 02 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 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连接MySQL代码的参数说明
2008/06/07 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
javascript实现评分功能
2020/06/24 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
python使用smtplib模块发送邮件
2020/12/17 Python
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
自荐信格式范文
2013/10/07 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
优秀员工获奖感言
2014/03/01 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
教师党员个人自我评价
2015/03/04 职场文书