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 相关文章推荐
B/S开发中常用javaScript技术与代码
Mar 09 Javascript
js setattribute批量设置css样式
Nov 26 Javascript
JS request函数 用来获取url参数
May 17 Javascript
jquery 选择器引擎sizzle浅析
Feb 06 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
Vue.js中对css的操作(修改)具体方式详解
Oct 30 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
webpack proxy 使用(代理的使用)
Jan 10 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判断浏览器、判断语言代码分享
2015/03/05 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
Css3圆角边框制作代码
2015/11/18 HTML / CSS
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
十八大演讲稿
2014/05/22 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
出差报告怎么写
2014/11/06 职场文书
求职自荐信怎么写
2015/03/04 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle