使用JS 获取当前用户使用的浏览器信息以及操作系统版本信息

220 阅读4分钟

说明:

   浏览器更新快,有些代码可能会失效,需要你再次测试验证。

    以下代码是我参照网友的代码进行改良整合而成。(由于项目时间急,没有记录所抄写代码的原作者,请原谅。。。) 

    系统版本 只测试了 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"  
};  
}  
}  

运行结果:

如果你有更好的解决方案,欢迎相互交流。


原文地址: blog.csdn.net/u012762221/…