前言:最近要完成一个统计各浏览器访问量占比的任务,于是好好查了查以前半知半解的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