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极速的,这不看不知道,一看吓一跳。

360极速浏览器UA怪异以及如何用js判断360浏览器http://hao.360.cn/sethomepage.html这个网址访问的时候,获得浏览器的UA是:

  1. "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 QIHU 360EE"

而在其他域名下面获得浏览的UA是:

  1. "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字符串,例:

  1. $.ua().ua
  2. // =>"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"

2、传入UA字符串:

插件不仅可以解析浏览器的UA信息,也可以传入字符串来解析,例:

  1. $.ua("string").ua
  2. // =>"string"

3、解析操作系统:

解析浏览器运行的操作平台信息:

  1. $.ua().platform;
  2. // =>
  3. {
  4. //是否为桌面操作系统
  5. isDesktop: true
  6. // 是否为手机操作系统
  7. isMobile: false
  8. // 是否为平板操作系统
  9. isTablet: false
  10. // 插件列表
  11. plugins: PluginArray
  12. // 平台
  13. platform: "win32"
  14. // 操作系统版本
  15. version: "6.1"
  16. // 系统名
  17. name: "windows"
  18. // 系统全名
  19. fullname: "window 7"
  20. // 是否为windows 7
  21. isWindows 7: true
  22. // 是否为windows
  23. isWindows: true
  24. }

4、解析浏览器信息:

解析浏览器的浏览器信息:

  1. $.ua().browser;
  2. // =>Object {name: "chrome", isChrome: true, version: "26.0.1410.64"}

5、解析浏览器引擎:

解析浏览器的引擎信息:

  1. $.ua().engine;
  2. // =>Object {name: "webkit", isWebkit: true, version: "537.31"}

6、浏览器内核判断:

判断浏览器的引擎信息:

  1. // 6、判断浏览器内核
  2. $.ua().isWebkit;
  3. $.ua().isGecko;
  4. $.ua().isTrident;

7、浏览器外壳判断:

判断浏览器的外壳特征(双核浏览器目前仅限于chrome内核的外壳特征判断,ie内核的外壳暂时无法判断):

可以通过特征判断浏览器的外壳,包括360极速浏览器chrome内核、360安全浏览器chrome内核、猎豹浏览器chrome内核、搜狗浏览器chrome内核、原版chrome浏览器、ie浏览器、火狐浏览器。

  1. // 7、判断浏览器外壳
  2. // 判断是否为原版chrome浏览器
  3. $.ua().isChrome;
  4.  
  5. // 判断是否为360极速浏览器chrome内核
  6. $.ua().is360ee;
  7.  
  8. // 判断是否为360安全浏览器chrome内核
  9. $.ua().is360se;
  10.  
  11. // 判断是否为猎豹浏览器chrome内核
  12. $.ua().isLiebao;
  13.  
  14. // 判断是否为搜狗浏览器chrome内核
  15. $.ua().isSougou;
  16.  
  17. // 判断是否为ie内核浏览器
  18. $.ua().isIe;
  19.  
  20. // 判断ie内核浏览器版本
  21. $.ua().ie;
  22. // =>6/7/8/9/10/11,0
  23.  
  24. // 判断是否为何种版本ie内核浏览器
  25. $.ua().isIe6;
  26. $.ua().isIe7;
  27. $.ua().isIe8;
  28. $.ua().isIe9;
  29. $.ua().isIe10;
  30. $.ua().isIe11;
  31. // =>boolean
  32.  
  33. // 判断是否为原版firefox浏览器
  34. $.ua().isFirefox;

8、浏览器类型判断:

判断浏览器的类型:

  1. // 8、判断浏览器类型
  2. $.ua().isMobile;
  3. $.ua().isTablet;
  4. $.ua().isDesktop;

9、总结:

一.js方法

  1. /*
  2. 判断浏览器名称和版本
  3. 目前只能判断:ie/firefox/chrome/opera/safari
  4. 2012年5月16日23:47:08
  5. 浏览器内核UA:UA;
  6. 浏览器内核名称:NV.name;
  7. 浏览器内核版本:NV.version;
  8. 浏览器外壳名称:NV.shell;
  9. */
  10. var NV = {};
  11. var UA = navigator.userAgent.toLowerCase();
  12. try
  13. {
  14. NV.name=!-[1,]?'ie':
  15. (UA.indexOf("firefox")>0)?'firefox':
  16. (UA.indexOf("chrome")>0)?'chrome':
  17. window.opera?'opera':
  18. window.openDatabase?'safari':
  19. 'unkonw';
  20. }catch(e){};
  21. try
  22. {
  23. NV.version=(NV.name=='ie')?UA.match(/msie ([\d.]+)/)[1]:
  24. (NV.name=='firefox')?UA.match(/firefox\/([\d.]+)/)[1]:
  25. (NV.name=='chrome')?UA.match(/chrome\/([\d.]+)/)[1]:
  26. (NV.name=='opera')?UA.match(/opera.([\d.]+)/)[1]:
  27. (NV.name=='safari')?UA.match(/version\/([\d.]+)/)[1]:
  28. '0';
  29. }catch(e){};
  30. try
  31. {
  32. NV.shell=(UA.indexOf('360ee')>-1)?'360极速浏览器':
  33. (UA.indexOf('360se')>-1)?'360安全浏览器':
  34. (UA.indexOf('se')>-1)?'搜狗浏览器':
  35. (UA.indexOf('aoyou')>-1)?'遨游浏览器':
  36. (UA.indexOf('theworld')>-1)?'世界之窗浏览器':
  37. (UA.indexOf('worldchrome')>-1)?'世界之窗极速浏览器':
  38. (UA.indexOf('greenbrowser')>-1)?'绿色浏览器':
  39. (UA.indexOf('qqbrowser')>-1)?'QQ浏览器':
  40. (UA.indexOf('baidu')>-1)?'百度浏览器':
  41. '未知或无壳';
  42. }catch(e){}
  43. alert('浏览器UA='+UA+
  44. '\n\n浏览器名称='+NV.name+
  45. '\n\n浏览器版本='+parseInt(NV.version)+
  46. '\n\n浏览器外壳='+NV.shell);
  47. });

二.jQuery插件

  1. ;(function($)
  2. {
  3. /*
  4. 判断浏览器名称和版本
  5. 目前只能判断:ie/firefox/chrome/opera/safari
  6. 2012年5月16日23:47:08
  7. 浏览器内核UA:$.NV('ua');或$.NV('UA');
  8. 浏览器内核名称:$.NV('name');或$.NV();
  9. 浏览器内核版本:$.NV('version');
  10. 浏览器外壳名称:$.NV('shell');
  11. */
  12. $.extend(
  13. {
  14. NV:function(name)
  15. {
  16. var NV = {};
  17. var UA = navigator.userAgent.toLowerCase();
  18. try
  19. {
  20. NV.name=!-[1,]?'ie':
  21. (UA.indexOf("firefox")>0)?'firefox':
  22. (UA.indexOf("chrome")>0)?'chrome':
  23. window.opera?'opera':
  24. window.openDatabase?'safari':
  25. 'unkonw';
  26. }catch(e){};
  27. try
  28. {
  29. NV.version=(NV.name=='ie')?UA.match(/msie ([\d.]+)/)[1]:
  30. (NV.name=='firefox')?UA.match(/firefox\/([\d.]+)/)[1]:
  31. (NV.name=='chrome')?UA.match(/chrome\/([\d.]+)/)[1]:
  32. (NV.name=='opera')?UA.match(/opera.([\d.]+)/)[1]:
  33. (NV.name=='safari')?UA.match(/version\/([\d.]+)/)[1]:
  34. '0';
  35. }catch(e){};
  36. try
  37. {
  38. NV.shell=(UA.indexOf('360ee')>-1)?'360极速浏览器':
  39. (UA.indexOf('360se')>-1)?'360安全浏览器':
  40. (UA.indexOf('se')>-1)?'搜狗浏览器':
  41. (UA.indexOf('aoyou')>-1)?'遨游浏览器':
  42. (UA.indexOf('theworld')>-1)?'世界之窗浏览器':
  43. (UA.indexOf('worldchrome')>-1)?'世界之窗极速浏览器':
  44. (UA.indexOf('greenbrowser')>-1)?'绿色浏览器':
  45. (UA.indexOf('qqbrowser')>-1)?'QQ浏览器':
  46. (UA.indexOf('baidu')>-1)?'百度浏览器':
  47. '未知或无壳';
  48. }catch(e){}
  49. switch(name)
  50. {
  51. case 'ua':
  52. case 'UA':br=UA;break;
  53. case 'name':br=NV.name;break;
  54. case 'version':br=NV.version;break;
  55. case 'shell':br=NV.shell;break;
  56. default:br=NV.name;
  57. }
  58. return br;
  59. }
  60. });
  61. })(jQuery);

调用方法(必须载入此插件):

  1. $(function()
  2. {
  3. alert('浏览器UA='+$.NV('UA')+
  4. '\n\n浏览器名称='+$.NV('name')+
  5. '\n\n浏览器版本='+parseInt($.NV('version'))+
  6. '\n\n浏览器外壳='+$.NV('shell'));
  7. });
  8. 测试demo:js/jQuery判断浏览器名称、内核版本、浏览器壳http://demo.qianduanblog.com/NV.php
0 0