非常全面的浏览器useragent判断代码

非常全面的浏览器useragent判断代码

什么是User Agent懂一点网页制作的人应该都明白。简单的说,User Agent就是用来识别浏览器名称、版本、引擎以及操作系统等信息的内容。于是乎,User Agent的判断就成为识别浏览器的关键,不仅仅如此,移动互联网开发势头迅猛,那么通过User Agent判断桌面端设备或移动设备就变的很为重要。当然,通过User Agent也可以用来改善一定的兼容性,比如判断得到用户用IE6浏览器那么就是用不同的代码。这些,我想许多的WEB开发中已经成为考虑的第一个问题。

那么,有没有一种好的判断User Agent的代码呢?网上应该有很多,比较简单的直接判断下iOS和Android,然后进入不一样的页面。比如百度地图就是如此,桌面设备访问http://map.baidu.com/地址,而移动设备就访问http://map.baidu.com/mobile/地址,你用桌面设备访问移动网址则还会自动跳回到桌面地址。这就是通过判断User Agent做到的效果。

我没有去细究百度地图是如何判断桌面设备和移动设备的,但我想要找到一个比较全面的User Agent判断代码。不知道大家是否知道有一个叫html5test的网站,其中要作用就是判断你的浏览器对HTML5的支持程度,但同时,他还提供了浏览器和设备信息。我在桌面端通过Firefox、Chrome、IE、Safari等测试都很正确,在移动设备端,Apple iPod下测试了Safari、Opera mini和UC,除了UC无法识别外其他都OK,另外在Nokia E63下也做了测试,默认浏览器OK,UC无法识别。

既然HTML5TEST已经做的如此全面,连浏览器、引擎、设备类型和设备名称等都一应俱全,那就说明在User Agent上的判断应该是做的非常不错的,至少,是我现今看到的最好的了。然后又看到HTML5TEST本身是开源的,那就下载下来分析一下吧。看过后,没有想到,HTML5TEST竟然封装的那么好,一个JS包含了基本上全部的User Agent判断,这个js文件,可以直接浏览这里

我把这个JS单独拿出来,再加上几句html,做了个浏览器测试的页面,大家可以通过访问这个页面来查看自己的浏览器信息、设备信息等,效果请见下图。地址:http://rovertang.com/labs/useragent/

useragent

我想,通过这一个js,得到了浏览器信息、设备类型和设备名称,接下来怎么做就看你自己的了,不过也有一个小小的担心:一个大于50K的js文件,对页面的加载似乎是有点压力的。

顺便说一下,发现IE对HTML5的DOCTYPE标签支持不是很好,有测试不通过的现象。万恶的IE确实挺让人恼火的。

最后推荐一个FireFox的组件吧,我想许多人都用过,就是User Agent Switcher,作用呢就是在FF下伪装成其他浏览器,比如iPhone的浏览器,这样就可以直接在FF下浏览移动网页进行代码分析了。

源码如下:

  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>useragent判断器</title>
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="viewport" content="width=device-width; initial-scale=1.0; minimum-scale=1.0; maximum-scale=1.0; user-scalable=no;">
  <script src='useragents.js' type='text/javascript'></script>
  </head>
   
  <body>
  <script>
  //alert(navigator.userAgent);
  Browsers = new UserAgents(navigator.userAgent);
  var txt = "browserName: " + (Browsers.browser.name ? Browsers.browser.name : '') + '<br />' +
    "browserChannel: " + (Browsers.browser.channel ? Browsers.browser.channel : '') + '<br />' +
    "browserVersion: " + (Browsers.browser.version ? Browsers.browser.version.toString() : '') + '<br />' +
    "browserVersionType: " + (Browsers.browser.version ? Browsers.browser.version.type : '') + '<br />' +
    "browserVersionMajor: " + (Browsers.browser.version ? Browsers.browser.version.major : '') + '<br />' +
    "browserVersionMinor: " + (Browsers.browser.version ? Browsers.browser.version.minor : '') + '<br />' +
    "browserVersionOriginal: " + (Browsers.browser.version ? Browsers.browser.version.original : '') + '<br />' +
    "browserMode: " + (Browsers.browser.mode ? Browsers.browser.mode : '') + '<br />' +
    "engineName: " + (Browsers.engine.name ? Browsers.engine.name : '') + '<br />' +
    "engineVersion: " + (Browsers.engine.version ? Browsers.engine.version.toString() : '') + '<br />' +
    "osName: " + (Browsers.os.name ? Browsers.os.name : '') + '<br />' +
    "osVersion: " + (Browsers.os.version ? Browsers.os.version.toString() : '') + '<br />' +
    "deviceManufacturer: " + (Browsers.device.manufacturer ? Browsers.device.manufacturer : '') + '<br />' +
    "deviceModel: " + (Browsers.device.model ? Browsers.device.model : '') + '<br />' +
    "deviceType: " + (Browsers.device.type ? Browsers.device.type : '') + '<br />' +
    "useragent: " + navigator.userAgent + '<br />' +
    "humanReadable: " + Browsers.toString();
  //alert(txt);
  window.document.write(txt);
  </script>
  <br><br><br><br>
  <a href="http://rovertang.com/blog/archives/555">Read More ... </a><br>
  Powered  by <a href="http://www.html5test.com">html5test</a><br>
  Modified by
  <a href="http://rovertang.com">RoverTang</a>
  </body>
  </html>

 

【原文地址:http://www.cnblogs.com/Tangf/archive/2012/03/25/2416605.html】

posted @ 2013-12-18 09:46  Lunaa  阅读(1864)  评论(0编辑  收藏  举报