转:浏览器的用户代理字符串

每个浏览器都有它自己的用户代理(user agent)字符串,里面包含了浏览器和操作系统等信息。通过使用这个字符串,我们可以处理跨浏览器的差异。用户代理字符串保存在 navigator.userAgent 变量中,一些常见浏览器的取值如下(稍有精简):

MSIE Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E)
Firefox Mozilla/5.0 (Windows NT 5.1; rv:10.0.3) Gecko/20100101 Firefox/10.0.3
Safari Mozilla/5.0 (Macintosh; U) AppleWebKit/533.20 (KHTML, like Gecko) Version/5.0.4 Safari/533.20
Chrome Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.9 Safari/535.7
Opera Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00

国内也有好几个基于 WebKit 的浏览器,其中只有傲游浏览器在 UA 中仅标明 AppleWebKit,其它浏览器都同时标明 AppleWebKit 和 Chrome。

再来看看移动设备浏览器的用户代理字符串(稍有精简):

Safari for iPhone Mozilla/5.0 (iPhone;) AppleWebKit/420+ Version/3.0 Mobile/1A543a Safari/419.3
Safari for iPad Mozilla/5.0 (iPad;) AppleWebKit/531.21 Version/4.0 Mobile/7B334b Safari/531.21
Safari for Android Mozilla/5.0 (Android 2.3.4;) AppleWebKit/533.1 Version/4.0 Mobile Safari/533.1
Chrome for Phone Mozilla/5.0 (Android 4.0.4;) AppleWebKit/535.19 Chrome/18.0 Mobile Safari/535.19
Chrome for Tablet Mozilla/5.0 (Android 4.0.4;) AppleWebKit/535.19 Chrome/18.0 Safari/535.19

另外,如果需要检测用户使用的操作系统,也可以用 navigator.platform。例如:

var platform = (function() {
  var pl = navigator.platform;
  if (pl.indexOf('Win') == 0) {
    return 'windows';
  } else if (pl.indexOf('Mac') == 0) {
    return 'macos';
  } else if (pl.indexOf('Linux') == 0 || pl.indexOf('X11') == 0) {
    return 'linux';
  } else if (pl.indexOf('iPhone') == 0 || pl.indexOf('iPad') == 0) {
    return 'ios';
  } else if (pl.indexOf('android') == 0) {
    return 'android';
  } else {
    return 'unknown';
  }
})();

参考资料:

[1] HTML DOM userAgent 属性
[2] User agent - Wikipedia, the free encyclopedia
[3] UserAgentString.com
[4] Chrome for Android User-Agent
[5] Gecko user agent string reference
[6] window.navigator.platform - MDN
[7] Don’t forget navigator.platform

转载自:http://www.cnblogs.com/zoho/archive/2012/04/06/2434777.html

原文地址:https://www.cnblogs.com/yingzi/p/2614195.html