说明:
浏览器更新快,有些代码可能会失效,需要你再次测试验证。
以下代码是我参照网友的代码进行改良整合而成。(由于项目时间急,没有记录所抄写代码的原作者,请原谅。。。)
系统版本 只测试了 Windows系统 ,IE浏览器 只测试了 IE9-IE最新版。Safari(苹果)浏览器仅测试了win版。
可以获取 用户当前浏览器的名称、(基于)内核版本号、(自身浏览器厂商的)内核版本号以及浏览器所处的操作系统版本信息。
获取浏览器 (基于)内核版本号
(function($){
var BrowserMatch = {
init: function() {
this.browser = this.getBrowser().browser || "未知浏览器"; //获取浏览器名
this.version = this.getBrowser().version || "未知浏览器版本号"; //获取浏览器版本
this.OS = this.getOS()+" "+this.getDigits() || "未知操作系统"; //系统版本号
},
getOS: function() { //判断所处操作系统
var sUserAgent = navigator.userAgent.toLowerCase();
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Win64")|| (navigator.platform == "wow64");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
if (isMac) return "Mac";
var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
if (isUnix) return "Unix";
var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
var bIsAndroid = sUserAgent.toLowerCase().match(/android/i) == "android";
if (isLinux) {
if(bIsAndroid) return "Android";
else return "Linux";
}
if (isWin) {
var isWin2K = sUserAgent.indexOf("Windows nt 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
if (isWin2K) return "Win2000";
var isWinXP = sUserAgent.indexOf("Windows nt 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1
sUserAgent.indexOf("Windows XP") > -1;
if (isWinXP) return "WinXP";
var isWin2003 = sUserAgent.indexOf("Windows nt 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
if (isWin2003) return "Win2003";
var isWinVista= sUserAgent.indexOf("Windows nt 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
if (isWinVista) return "WinVista";
var isWin7 = sUserAgent.indexOf("Windows nt 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
if (isWin7) return "Win7";
var isWin8 = sUserAgent.indexOf("windows nt 6.2") > -1 || sUserAgent.indexOf("Windows 8") > -1;
if (isWin8) return "Win8";
var isWin10 = sUserAgent.indexOf("windows nt 10.0")>-1||sUserAgent.indexOf("Windows 10")>-1;
if(isWin10)return "Win10";
}
return "其他";
},
getDigits:function(){ //判断当前操作系统的版本号
var sUserAgent = navigator.userAgent.toLowerCase();
var is64 = sUserAgent.indexOf("win64") > -1||sUserAgent.indexOf("wow64") > -1;
if (is64) {
return "64位";
}else{
return "32位";
}
},
getBrowser: function() { // 获取浏览器名
var rMsie = /(msie\s|trident\/7)([\w\.]+)/;
var rTrident = /(trident)\/([\w.]+)/;
var rEdge = /(chrome)\/([\w.]+)/;//IE
var rFirefox = /(firefox)\/([\w.]+)/; //火狐
var rOpera = /(opera).+version\/([\w.]+)/; //旧Opera
var rNewOpera = /(opr)\/(.+)/; //新Opera 基于谷歌
var rChrome = /(chrome)\/([\w.]+)/; //谷歌
var rUC = /(chrome)\/([\w.]+)/;//UC
var rMaxthon = /(chrome)\/([\w.]+)/;//遨游
var r2345 = /(chrome)\/([\w.]+)/;//2345
var rQQ = /(chrome)\/([\w.]+)/;//QQ
//var rMetasr = /(metasr)\/([\w.]+)/;//搜狗
var rSafari = /version\/([\w.]+).*(safari)/;
var ua = navigator.userAgent.toLowerCase();
var matchBS, matchBS2;
//IE 低版
matchBS = rMsie.exec(ua);
if (matchBS != null) {
matchBS2 = rTrident.exec(ua);
if (matchBS2 != null) {
switch (matchBS2[2]) {
case "4.0":
return {
browser:
"Microsoft IE",
version: "IE: 8" //内核版本号
};
break;
case "5.0":
return {
browser:
"Microsoft IE",
version: "IE: 9"
};
break;
case "6.0":
return {
browser:
"Microsoft IE",
version: "IE: 10"
};
break;
case "7.0":
return {
browser:
"Microsoft IE",
version: "IE: 11"
};
break;
default:
return {
browser:
"Microsoft IE",
version: "Undefined"
};
}
} else {
return {
browser: "Microsoft IE",
version: "IE:"+matchBS[2] || "0"
};
}
}
//IE最新版
matchBS = rEdge.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "Microsoft Edge",
version: "Chrome/"+matchBS[2] || "0"
};
}
//UC浏览器
matchBS = rUC.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "UC",
version: "Chrome/"+matchBS[2] || "0"
};
}
//火狐浏览器
matchBS = rFirefox.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "火狐",
version: "Firefox/"+matchBS[2] || "0"
};
}
//Oper浏览器
matchBS = rOpera.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "Opera",
version: "Chrome/"+matchBS[2] || "0"
};
}
//遨游
matchBS = rMaxthon.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "遨游",
version: "Chrome/"+matchBS[2] || "0"
};
}
//2345浏览器
matchBS = r2345.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "2345",
version: "Chrome/ "+matchBS[2] || "0"
};
}
//QQ浏览器
matchBS = rQQ.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "QQ",
version: "Chrome/"+matchBS[2] || "0"
};
}
//Safari(苹果)浏览器
matchBS = rSafari.exec(ua);
if ((matchBS != null) && (!(window.attachEvent)) && (!(window.chrome)) && (!(window.opera))) {
return {
browser: "Safari",
version: "Safari/"+matchBS[1] || "0"
};
}
//谷歌浏览器
matchBS = rChrome.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
matchBS2 = rNewOpera.exec(ua);
if (matchBS2 == null) {
return {
browser: "谷歌",
version: "Chrome/"+matchBS[2] || "0"
};
} else {
return {
browser: "Opera",
version: "opr/"+matchBS2[2] || "0"
};
}
}
}
};
BrowserMatch.init();
alert("当前浏览器为:" + BrowserMatch.browser +"\n版本为:"+ BrowserMatch.version + "\n所处操作系统为:"+BrowserMatch.OS);
})(jQuery);
最后运行的结果:
如果你 是想获取 浏览器厂商自身的内核版本,那么只需要修改 getBrowser: function() 方法 代码如下:
getBrowser: function() { // 获取浏览器名
var rMsie = /(msie\s|trident\/7)([\w\.]+)/;
var rTrident = /(trident)\/([\w.]+)/;
var rEdge = /(edge)\/([\w.]+)/;//IE
var rFirefox = /(firefox)\/([\w.]+)/; //火狐
var rOpera = /(opera).+version\/([\w.]+)/; //旧Opera
var rNewOpera = /(opr)\/(.+)/; //新Opera 基于谷歌
var rChrome = /(chrome)\/([\w.]+)/; //谷歌
var rUC = /(ubrowser)\/([\w.]+)/;//UC
var rMaxthon = /(maxthon)\/([\w.]+)/;//遨游
var r2345 = /(2345explorer)\/([\w.]+)/;//2345
var rQQ = /(qqbrowser)\/([\w.]+)/;//QQ
//var rMetasr = /(metasr)\/([\w.]+)/;//搜狗
var rSafari = /version\/([\w.]+).*(safari)/;
var ua = navigator.userAgent.toLowerCase();
var matchBS, matchBS2;
//IE 低版
matchBS = rMsie.exec(ua);
if (matchBS != null) {
matchBS2 = rTrident.exec(ua);
if (matchBS2 != null) {
switch (matchBS2[2]) {
case "4.0":
return {
browser:
"Microsoft IE",
version: "IE: 8" //内核版本号
};
break;
case "5.0":
return {
browser:
"Microsoft IE",
version: "IE: 9"
};
break;
case "6.0":
return {
browser:
"Microsoft IE",
version: "IE: 10"
};
break;
case "7.0":
return {
browser:
"Microsoft IE",
version: "IE: 11"
};
break;
default:
return {
browser:
"Microsoft IE",
version: "Undefined"
};
}
} else {
return {
browser: "Microsoft IE",
version: "IE:"+matchBS[2] || "0"
};
}
}
//IE最新版
matchBS = rEdge.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "Microsoft Edge",
version: "Edge/"+matchBS[2] || "0"
};
}
//UC浏览器
matchBS = rUC.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "UC",
version: "ubrowser/"+matchBS[2] || "0"
};
}
//火狐浏览器
matchBS = rFirefox.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "火狐",
version: "Firefox/"+matchBS[2] || "0"
};
}
//Oper浏览器
matchBS = rOpera.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "Opera",
version: "Opera/"+matchBS[2] || "0"
};
}
//遨游
matchBS = rMaxthon.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "遨游",
version: "Maxthon/"+matchBS[2] || "0"
};
}
//2345浏览器
matchBS = r2345.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "2345",
version: "2345explorer/ "+matchBS[2] || "0"
};
}
//QQ浏览器
matchBS = rQQ.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
return {
browser: "QQ",
version: "qqbrowser/"+matchBS[2] || "0"
};
}
//Safari(苹果)浏览器
matchBS = rSafari.exec(ua);
if ((matchBS != null) && (!(window.attachEvent)) && (!(window.chrome)) && (!(window.opera))) {
return {
browser: "Safari",
version: "Safari(win版)/"+matchBS[1] || "0"
};
}
//谷歌浏览器
matchBS = rChrome.exec(ua);
if ((matchBS != null) && (!(window.attachEvent))) {
matchBS2 = rNewOpera.exec(ua);
if (matchBS2 == null) {
return {
browser: "谷歌",
version: "Chrome/"+matchBS[2] || "0"
};
} else {
return {
browser: "Opera",
version: "opr/"+matchBS2[2] || "0"
};
}
}
}
运行结果:
如果你有更好的解决方案,欢迎相互交流。