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 相关文章推荐
JavaScript delete 属性的使用
Oct 08 Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 Javascript
jQuery实现高亮显示网页关键词的方法
Aug 07 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
Feb 19 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
JS如何生成一个不重复的ID的函数
Dec 25 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
js实现页面导航层级指示效果
Aug 25 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 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
通俗易懂的php防注入代码
2010/04/07 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
北承题目(C++)
2012/05/16 面试题
什么是lambda函数
2013/09/17 面试题
管理站站长岗位职责
2013/11/27 职场文书
施工质量承诺书范文
2014/05/30 职场文书
民事答辩状格式范文
2015/05/21 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python