浏览器版本识别

前言:最近要完成一个统计各浏览器访问量占比的任务,于是好好查了查以前半知半解的navigator.userAgent,总结如下。通过navigator.userAgent可以获得包含浏览器版本信息的字符串。本文分两部分:

1)各浏览器的userAgent特点;

2)如何识别各浏览器版本

各浏览器的userAgent

(以下数据为工作中的实际数据,不同版本的浏览器仅各列出具有代表性的一条)

//IE各版本
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E);//IE6
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0);//IE7
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0);//IE8
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0);//IE9
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0);//IE10
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko;//IE11
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393;//IE edge
/*特点:IE6~IE10会包含compatible和MSIE,IE11包含rv:11,IE edge包含Edge*/
//其他浏览器
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML,like Gecko) Version/5.1 Safari/534.50;//safari浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36;//chrome浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0;//firefox
Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11;//opera
/*特点:
Safari:包含Safari,且不包含Chrome
chrome:包含Safari,且包含Chrome
firefox:包含Firefox
Opera:包含Opera
 */

以上仅列出常见浏览器,更多其他浏览器的详细信息各参见文章最后的参考链接。

识别浏览器版本

function BrowserType(){
  // var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E)"
  var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
  var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1  ; //判断是否IE6~IE10浏览器
  var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
  var isIE11 = userAgent.indexOf("rv:11") > -1;//判断是否为IE11浏览器
  var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
  var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
  var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器

  if (isIE) {//如果为IE10及以下
    var reIE = new RegExp("MSIE (\d+\.\d+);");
    reIE.test(userAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);//获得第一个捕获组的匹配值
    if(fIEVersion == 6){ 
      return "IE6";
    }else if(fIEVersion == 7){ 
      return "IE7";
    }else if(fIEVersion == 8){ 
      return "IE8";
    }else if(fIEVersion == 9){ 
      return "IE9";
    }else if(fIEVersion == 10){ 
      return "IE10";
    }else{ 
      return "0";
    }//IE版本过低
  }

  if (isFF) { return "Firefox";}
  if (isOpera) { return "Opera";}
  if (isSafari) { return "Safari";}
  if (isChrome) { return "Chrome";}
  if (isIE11) { return "IE11"}
  if (isEdge) { return "Edge";}
}

更多浏览器userAgent信息参考:http://www.360doc.com/content/12/1012/21/7662927_241124973.shtml

userAgent各字段的含义解释参考:https://user-agents.me/useragent/mozilla40-compatible-msie-70-windows-nt-61-wow64-trident50-slcc2-net-clr-2050727-net-clr-3530729-net-clr-3030729-media-center-pc-60

原文地址:https://www.cnblogs.com/youhong/p/7011155.html