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 获取图片颜色
Apr 05 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
JS实现QQ图片一闪一闪的效果小例子
Jul 31 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
vue实现弹幕功能
Oct 25 Javascript
js通过canvas生成图片缩略图
Oct 02 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树的代码,可以嵌套任意层
2006/10/09 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
JQuery写动态树示例代码
2013/07/31 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
python异步任务队列示例
2014/04/01 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
python 字典套字典或列表的示例
2019/12/16 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
蔬菜基地的创业计划书
2014/01/06 职场文书
会计员岗位职责
2014/03/15 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
纪律教育月活动总结
2014/08/26 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python