Javascript实现检测客户端类型代码封包
检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
/**
*Author:laixiangran.
*Createdbylaixiangranon2015/12/02.
*检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
*********************************************************************
*各版本浏览器在windows10.0下的用户代理字符串:
*GoogleChrome45.0.2454.85——"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/45.0.2454.85Safari/537.36"
*Opera31.0.1889.174——"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.155Safari/537.36OPR/31.0.1889.174"
*MicrosoftEdge——"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/42.0.2311.135Safari/537.36Edge/12.10240"
*Firefox40.0.3——"Mozilla/5.0(WindowsNT10.0;WOW64;rv:40.0)Gecko/20100101Firefox/40.0"
*InternetExplorer11+——"Mozilla/5.0(WindowsNT10.0;WOW64;Trident/7.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.30729;.NETCLR3.5.30729;rv:11.0)likeGecko"
*InternetExplorer10-——"Mozilla/5.0(compatible;MSIEx.0;WindowsNT10.0;WOW64;Trident/8.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.30729;.NETCLR3.5.30729)"
*/
(function(){
window.iClient={};
//呈现引擎信息
varengine={
//呈现引擎
ie:0,
gecko:0,
webkit:0,
khtml:0,
opera:0,
//具体版本号
ver:null
};
varbrowser={
//浏览器
ie:0,
edge:0,
firefox:0,
safari:0,
konq:0,
opera:0,
chrome:0,
//具体版本号
ver:null
};
//平台、设备和操作系统
varsystem={
win:false,
mac:false,
unix:false,
//移动设备
iphone:false,
ipod:false,
ipad:false,
ios:false,
android:false,
nokiaN:false,
winMobile:false,
//游戏系统
wii:false,//任天堂
ps:false//Playstation3
};
//获取浏览器的用户代理字符串
varua=window.navigator.userAgent;
//检测呈现引擎和浏览器
//检测Presto内核的Opera浏览器
if(window.opera){
engine.ver=browser.ver=window.opera.version();
engine.opera=browser.opera=parseFloat(engine.ver);
}
//检测WebKit用代理字符串中的"AppleWebKit"进行检测
elseif(/AppleWebKit\/(\S+)/.test(ua)){
engine.ver=RegExp["$1"];
engine.webkit=parseFloat(engine.ver);
//确定MicrosoftEdge
if(/Edge\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.edge=parseFloat(browser.ver);
}
//确定WebKit内核Opera
elseif(/OPR\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.opera=parseFloat(browser.ver);
}
//确定Chrome
elseif(/Chrome\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.chrome=parseFloat(browser.ver);
}
//确定Safari
elseif(/Version\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.safari=parseFloat(browser.ver);
}else{
//近似的确定版本号
varsafariVersion=1;
if(engine.webkit<100){
safariVersion=1;
}elseif(engine.webkit<312){
safariVersion=1.2;
}elseif(engine.webkit<412){
safariVersion=1.3;
}else{
safariVersion=2;
}
browser.ver=browser.safari=safariVersion;
}
}
//检测KHTML用于Konqueror3.1及更早版本中不包含KHTML的版本,故而就要使用Konqueror的版本来代替
elseif(/KHTML\/(\S+)/.test(ua)||/Konqueror\/(\S+)/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.khtml=browser.konq=parseFloat(engine.ver);s
}
//检测Gecko其版本号在字符串"rv:"的后面
elseif(/rv:([^\)]+)\)Gecko\/\d{8}/.test(ua)){
engine.ver=RegExp["$1"];
engine.gecko=parseFloat(engine.ver);
//确定Firefox
if(/Firefox\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.firefox=parseFloat(browser.ver);
}
}
//检测IE
elseif(/MSIE([^;]+)/.test(ua)||/rv:([^\)]+)\)likeGecko/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.ie=browser.ie=parseFloat(engine.ver);
}
//获取平台或者操作系统信息,可能的值:win32、win64、MacPPC、MacIntel、Xll、Linuxi686
varp=window.navigator.platform;
//检测平台
system.win=p.indexOf("Win")==0;
system.mac=p.indexOf("Mac")==0;
system.unix=(p=="Xll'")||(p.indexOf("Linux")==0);
//检测Windows操作系统
if(system.win){
if(/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){
if(RegExp["$1"]=="NT"){
switch(RegExp["$2"]){
case"5.0":
system.win="2000";
break;
case"5.1":
system.win="XP";
break;
case"6.0":
system.win="Vista";
break;
case"7":
system.win="7";
break;
case"8":
system.win="8";
break;
case"8.1":
system.win="8.1";
break;
case"10.0":
system.win="10.0";
break;
default:
system.win="NT";
break;
}
}
}
}
//移动设备
system.iphone=ua.indexOf("iPhone")>-1;
system.ipod=ua.indexOf("iPod")>-1;
system.ipad=ua.indexOf("iPad")>-1;
system.nokiaN=ua.indexOf("NokiaN")>-1;
//windowmobile
if(system.win=="CE"){
system.winMobile=system.win;
}elseif(system.win=="Ph"){
if(/WindowsPhoneOS(\d+.\d+)/.test(ua)){
system.win="Phone";
system.winMobile=parseFloat(RegExp["$1"]);
}
}
//检测iOS版本
if(system.mac&&ua.indexOf("Mobile")>-1){
if(/CPU(?:iPhone)?OS(\d+.\d+)/.test(ua)){
system.ios=parseFloat(RegExp["$1"].replace("_","."));
}else{
system.ios=2;//不能真正检测出来,所以只能猜测
}
}
//检测安卓版本
if(/Android(\d+.\d+)/.test(ua)){
system.android=parseFloat(RegExp["$1"]);
}
//检测游戏系统
system.wii=ua.indexOf("wii")>-1;
system.ps=/playstation/i.test(ua);
window.iClient.engine=engine;
window.iClient.browser=browser;
window.iClient.system=system;
})();
再给大家一个简单点的实例:判断windows、linux、android
<html>
<head>
<title>判断操作系统</title>
<scripttype="text/javascript">
functiondetectOS(){
varsUserAgent=navigator.userAgent;
varisWin=(navigator.platform=="Win32")||(navigator.platform=="Windows");
varisMac=(navigator.platform=="Mac68K")||(navigator.platform=="MacPPC")||(navigator.platform=="Macintosh")||(navigator.platform=="MacIntel");
if(isMac)return"Mac";
varisUnix=(navigator.platform=="X11")&&!isWin&&!isMac;
if(isUnix)return"Unix";
varisLinux=(String(navigator.platform).indexOf("Linux")>-1);
varbIsAndroid=sUserAgent.toLowerCase().match(/android/i)=="android";
if(isLinux){
if(bIsAndroid)return"Android";
elsereturn"Linux";
}
if(isWin){
varisWin2K=sUserAgent.indexOf("WindowsNT5.0")>-1||sUserAgent.indexOf("Windows2000")>-1;
if(isWin2K)return"Win2000";
varisWinXP=sUserAgent.indexOf("WindowsNT5.1")>-1||
sUserAgent.indexOf("WindowsXP")>-1;
if(isWinXP)return"WinXP";
varisWin2003=sUserAgent.indexOf("WindowsNT5.2")>-1||sUserAgent.indexOf("Windows2003")>-1;
if(isWin2003)return"Win2003";
varisWinVista=sUserAgent.indexOf("WindowsNT6.0")>-1||sUserAgent.indexOf("WindowsVista")>-1;
if(isWinVista)return"WinVista";
varisWin7=sUserAgent.indexOf("WindowsNT6.1")>-1||sUserAgent.indexOf("Windows7")>-1;
if(isWin7)return"Win7";
}
return"other";
}
document.writeln("您的操作系统是:"+detectOS());
alert(detectOS());
</script>
</head>
<body>
</body>
</html>