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学习基础笔记之DOM对象操作
Nov 03 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
JavaScript实现控制打开文件另存为对话框的方法
Apr 17 Javascript
理解javascript闭包
Dec 15 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
微信小程序分包加载代码实现方法详解
Sep 23 Javascript
JavaScript获取时区实现过程解析
Sep 24 Javascript
JavaScript ES6的函数拓展
Jan 18 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模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php下载文件的代码示例
2012/06/29 PHP
php 购物车完整实现代码
2014/06/05 PHP
PHP7.0版本备注
2015/07/23 PHP
php给图片加文字水印
2015/07/31 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
javascript 获取图片颜色
2009/04/05 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
js opener的使用详解
2014/01/11 Javascript
javascript 回调函数详解
2014/11/11 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
Python 的 with 语句详解
2014/06/13 Python
浅析Python中signal包的使用
2015/11/13 Python
Python正则捕获操作示例
2017/08/19 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
杭州时比特电子有限公司SQL
2013/08/22 面试题
小学生暑假感言
2014/02/06 职场文书
基层党员对照检查材料
2014/08/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书