query.ua解析ie、chrome、firefox、360内核、外壳、版本
来源:互联网 发布:二手买卖软件有那些? 编辑:程序博客网 时间:2024/05/08 17:01
1、获取浏览器UA字符串:
浏览器是用户访问网站的代理窗口,每一个浏览器都有属于自己的代理字符串标示。有一点比较特殊的是,360浏览器的UA却很诡异。
360极速浏览器UA因域名不同而异:
今天在写一个判断浏览器、浏览器版本、操作系统、操作系统版本、浏览器外壳的js,去http://hao.360.cn/sethomepage.html网站看看他们的js是如何写的,始终不知道他们是如何通过js来判断浏览器是360极速的,这不看不知道,一看吓一跳。
在http://hao.360.cn/sethomepage.html这个网址访问的时候,获得浏览器的UA是:
- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 QIHU 360EE"
而在其他域名下面获得浏览的UA是:
- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
两个UA非常的相似,但又有点不同,很明显的是第一段在360域名上获得的浏览器UA最后添加了“QIHU 360EE”字符,这是奇虎360极速浏览器的识别码。360极速浏览器用心良苦的通过域名来修改UA,这是何等居心啊?!
顺便说下hao123和hao.360判断浏览器的类型的脚本几乎一模一样,真不知道谁抄了谁。
获取浏览器UA字符串,例:
- $.ua().ua
- // =>"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"
2、传入UA字符串:
插件不仅可以解析浏览器的UA信息,也可以传入字符串来解析,例:
- $.ua("string").ua
- // =>"string"
3、解析操作系统:
解析浏览器运行的操作平台信息:
- $.ua().platform;
- // =>
- {
- //是否为桌面操作系统
- isDesktop: true
- // 是否为手机操作系统
- isMobile: false
- // 是否为平板操作系统
- isTablet: false
- // 插件列表
- plugins: PluginArray
- // 平台
- platform: "win32"
- // 操作系统版本
- version: "6.1"
- // 系统名
- name: "windows"
- // 系统全名
- fullname: "window 7"
- // 是否为windows 7
- isWindows 7: true
- // 是否为windows
- isWindows: true
- }
4、解析浏览器信息:
解析浏览器的浏览器信息:
- $.ua().browser;
- // =>Object {name: "chrome", isChrome: true, version: "26.0.1410.64"}
5、解析浏览器引擎:
解析浏览器的引擎信息:
- $.ua().engine;
- // =>Object {name: "webkit", isWebkit: true, version: "537.31"}
6、浏览器内核判断:
判断浏览器的引擎信息:
- // 6、判断浏览器内核
- $.ua().isWebkit;
- $.ua().isGecko;
- $.ua().isTrident;
7、浏览器外壳判断:
判断浏览器的外壳特征(双核浏览器目前仅限于chrome内核的外壳特征判断,ie内核的外壳暂时无法判断):
可以通过特征判断浏览器的外壳,包括360极速浏览器chrome内核、360安全浏览器chrome内核、猎豹浏览器chrome内核、搜狗浏览器chrome内核、原版chrome浏览器、ie浏览器、火狐浏览器。
- // 7、判断浏览器外壳
- // 判断是否为原版chrome浏览器
- $.ua().isChrome;
- // 判断是否为360极速浏览器chrome内核
- $.ua().is360ee;
- // 判断是否为360安全浏览器chrome内核
- $.ua().is360se;
- // 判断是否为猎豹浏览器chrome内核
- $.ua().isLiebao;
- // 判断是否为搜狗浏览器chrome内核
- $.ua().isSougou;
- // 判断是否为ie内核浏览器
- $.ua().isIe;
- // 判断ie内核浏览器版本
- $.ua().ie;
- // =>6/7/8/9/10/11,0
- // 判断是否为何种版本ie内核浏览器
- $.ua().isIe6;
- $.ua().isIe7;
- $.ua().isIe8;
- $.ua().isIe9;
- $.ua().isIe10;
- $.ua().isIe11;
- // =>boolean
- // 判断是否为原版firefox浏览器
- $.ua().isFirefox;
8、浏览器类型判断:
判断浏览器的类型:
- // 8、判断浏览器类型
- $.ua().isMobile;
- $.ua().isTablet;
- $.ua().isDesktop;
9、总结:
一.js方法
- /*
- 判断浏览器名称和版本
- 目前只能判断:ie/firefox/chrome/opera/safari
- 2012年5月16日23:47:08
- 浏览器内核UA:UA;
- 浏览器内核名称:NV.name;
- 浏览器内核版本:NV.version;
- 浏览器外壳名称:NV.shell;
- */
- var NV = {};
- var UA = navigator.userAgent.toLowerCase();
- try
- {
- NV.name=!-[1,]?'ie':
- (UA.indexOf("firefox")>0)?'firefox':
- (UA.indexOf("chrome")>0)?'chrome':
- window.opera?'opera':
- window.openDatabase?'safari':
- 'unkonw';
- }catch(e){};
- try
- {
- NV.version=(NV.name=='ie')?UA.match(/msie ([\d.]+)/)[1]:
- (NV.name=='firefox')?UA.match(/firefox\/([\d.]+)/)[1]:
- (NV.name=='chrome')?UA.match(/chrome\/([\d.]+)/)[1]:
- (NV.name=='opera')?UA.match(/opera.([\d.]+)/)[1]:
- (NV.name=='safari')?UA.match(/version\/([\d.]+)/)[1]:
- '0';
- }catch(e){};
- try
- {
- NV.shell=(UA.indexOf('360ee')>-1)?'360极速浏览器':
- (UA.indexOf('360se')>-1)?'360安全浏览器':
- (UA.indexOf('se')>-1)?'搜狗浏览器':
- (UA.indexOf('aoyou')>-1)?'遨游浏览器':
- (UA.indexOf('theworld')>-1)?'世界之窗浏览器':
- (UA.indexOf('worldchrome')>-1)?'世界之窗极速浏览器':
- (UA.indexOf('greenbrowser')>-1)?'绿色浏览器':
- (UA.indexOf('qqbrowser')>-1)?'QQ浏览器':
- (UA.indexOf('baidu')>-1)?'百度浏览器':
- '未知或无壳';
- }catch(e){}
- alert('浏览器UA='+UA+
- '\n\n浏览器名称='+NV.name+
- '\n\n浏览器版本='+parseInt(NV.version)+
- '\n\n浏览器外壳='+NV.shell);
- });
二.jQuery插件
- ;(function($)
- {
- /*
- 判断浏览器名称和版本
- 目前只能判断:ie/firefox/chrome/opera/safari
- 2012年5月16日23:47:08
- 浏览器内核UA:$.NV('ua');或$.NV('UA');
- 浏览器内核名称:$.NV('name');或$.NV();
- 浏览器内核版本:$.NV('version');
- 浏览器外壳名称:$.NV('shell');
- */
- $.extend(
- {
- NV:function(name)
- {
- var NV = {};
- var UA = navigator.userAgent.toLowerCase();
- try
- {
- NV.name=!-[1,]?'ie':
- (UA.indexOf("firefox")>0)?'firefox':
- (UA.indexOf("chrome")>0)?'chrome':
- window.opera?'opera':
- window.openDatabase?'safari':
- 'unkonw';
- }catch(e){};
- try
- {
- NV.version=(NV.name=='ie')?UA.match(/msie ([\d.]+)/)[1]:
- (NV.name=='firefox')?UA.match(/firefox\/([\d.]+)/)[1]:
- (NV.name=='chrome')?UA.match(/chrome\/([\d.]+)/)[1]:
- (NV.name=='opera')?UA.match(/opera.([\d.]+)/)[1]:
- (NV.name=='safari')?UA.match(/version\/([\d.]+)/)[1]:
- '0';
- }catch(e){};
- try
- {
- NV.shell=(UA.indexOf('360ee')>-1)?'360极速浏览器':
- (UA.indexOf('360se')>-1)?'360安全浏览器':
- (UA.indexOf('se')>-1)?'搜狗浏览器':
- (UA.indexOf('aoyou')>-1)?'遨游浏览器':
- (UA.indexOf('theworld')>-1)?'世界之窗浏览器':
- (UA.indexOf('worldchrome')>-1)?'世界之窗极速浏览器':
- (UA.indexOf('greenbrowser')>-1)?'绿色浏览器':
- (UA.indexOf('qqbrowser')>-1)?'QQ浏览器':
- (UA.indexOf('baidu')>-1)?'百度浏览器':
- '未知或无壳';
- }catch(e){}
- switch(name)
- {
- case 'ua':
- case 'UA':br=UA;break;
- case 'name':br=NV.name;break;
- case 'version':br=NV.version;break;
- case 'shell':br=NV.shell;break;
- default:br=NV.name;
- }
- return br;
- }
- });
- })(jQuery);
调用方法(必须载入此插件):
- $(function()
- {
- alert('浏览器UA='+$.NV('UA')+
- '\n\n浏览器名称='+$.NV('name')+
- '\n\n浏览器版本='+parseInt($.NV('version'))+
- '\n\n浏览器外壳='+$.NV('shell'));
- });
- 测试demo:http://demo.qianduanblog.com/NV.php
0 0
- query.ua解析ie、chrome、firefox、360内核、外壳、版本
- JS:区分 Chrome、Firefox、IE 浏览器类型和版本
- IE、Firefox、Chrome比较
- javascript解析xml文件。兼容IE、firefox、Chrome
- javascript解析xml文件。兼容IE、firefox、Chrome
- pasteHTML兼容ie,firefox,chrome
- FLASH兼容IE FireFox Chrome
- pdf预览兼容ie,chrome,Firefox,2345,360亲测
- X-UA-Compatible IE=edge,chrome=1
- 推荐打印打印控件Lodop,支持IE,firefox,chrome等位内核的浏览器
- selenium 与 ie chrome chrome 版本问题
- FireFox、Opera、Chrome、IE内存占用对比
- 修改Chrome Firefox IE临时文件夹位置
- event 兼容调用(IE,Firefox,Chrome)
- js操作select 兼容ie、chrome、Firefox
- JS在IE,firefox,chrome中的兼容问题
- jquery, select, option, firefox, chrome, IE, opera...
- chrome与opera,ie,firefox比较
- OpenCV编程->Haar训练(4)
- iOS NSNotification的使用
- Nosql Mongodb之旅(24)—MongoDB Replica Sets
- C++宏定义中的特殊符号
- 第十二天 乐在其中-Android与远端之XML
- query.ua解析ie、chrome、firefox、360内核、外壳、版本
- iOS NSDictionary、NSData、JSON数据类型相互转换
- HDU 4034(Graph)
- Nyoj 364 田忌赛马
- Nosql Mongodb之旅(25)—MongoDB Replica Sets增加节点
- merge inlude使用
- GDI初印象
- HDU1556 Color the ball 树状数组 修改区间值 查找单点值
- Nosql Mongodb之旅(26)—MongoDB Replica Sets减少节点