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>