<span>/*</span>
<span>*
* Author: laixiangran.
* Created by laixiangran on 2015/12/02.
* 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
* ********************************************************************
* 各版本浏览器在windows10.0下的用户代理字符串:
* Google Chrome 45.0.2454.85 —— "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36"
* Opera 31.0.1889.174 —— "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 OPR/31.0.1889.174"
* Microsoft Edge —— "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
* Firefox 40.0.3 —— "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
* Internet Explorer 11+ —— "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko"
* Internet Explorer 10- —— "Mozilla/5.0 (compatible; MSIE x.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
</span>
<span>*/</span>
<span>
(</span>
<span>function</span>
<span>(){
window.iClient </span>=<span> {};
</span><span>//</span><span>呈现引擎信息</span><span>var</span> engine =<span> {
</span><span>//</span><span>呈现引擎</span>
ie: 0<span>,
gecko: </span>0<span>,
webkit: </span>0<span>,
khtml: </span>0<span>,
opera:</span>0<span>,
</span><span>//</span><span>具体版本号</span>
ver: <span>null</span><span>
};
</span><span>var</span> browser =<span> {
</span><span>//</span><span>浏览器</span>
ie: 0<span>,
edge: </span>0<span>,
firefox: </span>0<span>,
safari: </span>0<span>,
konq: </span>0<span>,
opera: </span>0<span>,
chrome: </span>0<span>,
</span><span>//</span><span>具体版本号</span>
ver: <span>null</span><span>
};
</span><span>//</span><span>平台、设备和操作系统</span><span>var</span> system =<span> {
win: </span><span>false</span><span>,
mac: </span><span>false</span><span>,
unix: </span><span>false</span><span>,
</span><span>//</span><span>移动设备</span>
iphone: <span>false</span><span>,
ipod: </span><span>false</span><span>,
ipad: </span><span>false</span><span>,
ios: </span><span>false</span><span>,
android: </span><span>false</span><span>,
nokiaN: </span><span>false</span><span>,
winMobile: </span><span>false</span><span>,
</span><span>//</span><span>游戏系统</span>
wii: <span>false</span>, <span>//</span><span>任天堂</span>
ps: <span>false</span><span>//</span><span>Playstation3</span><span> };
</span><span>//</span><span>获取浏览器的用户代理字符串</span><span>var</span> ua =<span> window.navigator.userAgent;
</span><span>//</span><span>检测呈现引擎和浏览器</span><span>//</span><span>检测Presto内核的Opera浏览器</span><span>if</span><span>(window.opera){
engine.ver </span>= browser.ver =<span> window.opera.version();
engine.opera </span>= browser.opera =<span> parseFloat(engine.ver);
}
</span><span>//</span><span>检测WebKit 用代理字符串中的"AppleWebKit"进行检测</span><span>else</span><span>if</span>(/AppleWebKit/(S+)/<span>.test(ua)){
engine.ver </span>= RegExp["$1"<span>];
engine.webkit </span>=<span> parseFloat(engine.ver);
</span><span>//</span><span>确定Microsoft Edge</span><span>if</span>(/Edge/(S+)/<span>.test(ua)){
browser.ver </span>= RegExp["$1"<span>];
browser.edge </span>=<span> parseFloat(browser.ver);
}
</span><span>//</span><span>确定WebKit内核Opera</span><span>else</span><span>if</span>(/OPR/(S+)/<span>.test(ua)){
browser.ver </span>= RegExp["$1"<span>];
browser.opera </span>=<span> parseFloat(browser.ver);
}
</span><span>//</span><span>确定Chrome</span><span>else</span><span>if</span>(/Chrome/(S+)/<span>.test(ua)){
browser.ver </span>= RegExp["$1"<span>];
browser.chrome </span>=<span> parseFloat(browser.ver);
}
</span><span>//</span><span>确定Safari</span><span>else</span><span>if</span>(/Version/(S+)/<span>.test(ua)){
browser.ver </span>= RegExp["$1"<span>];
browser.safari </span>=<span> parseFloat(browser.ver);
}</span><span>else</span><span>{
</span><span>//</span><span>近似的确定版本号</span><span>var</span> safariVersion = 1<span>;
</span><span>if</span>(engine.webkit < 100<span>){
safariVersion </span>= 1<span>;
}</span><span>else</span><span>if</span>(engine.webkit <312<span>){
safariVersion </span>= 1.2<span>;
}</span><span>else</span><span>if</span>(engine.webkit < 412<span>){
safariVersion </span>= 1.3<span>;
}</span><span>else</span><span>{
safariVersion </span>= 2<span>;
}
browser.ver </span>= browser.safari =<span> safariVersion;
}
}
</span><span>//</span><span>检测KHTML 用于Konqueror3.1及更早版本中不包含KHTML的版本,故而就要使用Konqueror的版本来代替</span><span>else</span><span>if</span>(/KHTML/(S+)/.test(ua) || /Konqueror/(S+)/<span>.test(ua)){
engine.ver </span>= browser.ver = RegExp["$1"<span>];
engine.khtml </span>= browser.konq =<span> parseFloat(engine.ver);s
}
</span><span>//</span><span>检测Gecko 其版本号在字符串"rv:"的后面</span><span>else</span><span>if</span>(/rv:([^)]+)) Gecko/d{8}/<span>.test(ua)){
engine.ver </span>= RegExp["$1"<span>];
engine.gecko </span>=<span> parseFloat(engine.ver);
</span><span>//</span><span>确定Firefox</span><span>if</span>(/Firefox/(S+)/<span>.test(ua)){
browser.ver </span>= RegExp["$1"<span>];
browser.firefox </span>=<span> parseFloat(browser.ver);
}
}
</span><span>//</span><span>检测IE</span><span>else</span><span>if</span>(/MSIE ([^;]+)/.test(ua) || /rv:([^)]+)) like Gecko/<span>.test(ua)){
engine.ver </span>= browser.ver = RegExp["$1"<span>];
engine.ie </span>= browser.ie =<span> parseFloat(engine.ver);
}
</span><span>//</span><span>获取平台或者操作系统信息,可能的值:win32、win64、MacPPC、MacIntel、Xll、Linux i686</span><span>var</span> p =<span> window.navigator.platform;
</span><span>//</span><span>检测平台</span>
system.win = p.indexOf("Win") == 0<span>;
system.mac </span>= p.indexOf("Mac") == 0<span>;
system.unix </span>= (p == "Xll‘") || (p.indexOf("Linux") == 0<span>);
</span><span>//</span><span>检测Windows操作系统</span><span>if</span><span>(system.win){
</span><span>if</span>(/Win(?:dows )?([^do]{2})s?(d+.d+)?/<span>.test(ua)){
</span><span>if</span>(RegExp["$1"] == "NT"<span>){
</span><span>switch</span>(RegExp["$2"<span>]){
</span><span>case</span> "5.0"<span>:
system.win </span>= "2000"<span>;
</span><span>break</span><span>;
</span><span>case</span> "5.1"<span>:
system.win </span>= "XP"<span>;
</span><span>break</span><span>;
</span><span>case</span> "6.0"<span>:
system.win </span>= "Vista"<span>;
</span><span>break</span><span>;
</span><span>case</span> "7"<span>:
system.win </span>= "7"<span>;
</span><span>break</span><span>;
</span><span>case</span> "8"<span>:
system.win </span>= "8"<span>;
</span><span>break</span><span>;
</span><span>case</span> "8.1"<span>:
system.win </span>= "8.1"<span>;
</span><span>break</span><span>;
</span><span>case</span> "10.0"<span>:
system.win </span>= "10.0"<span>;
</span><span>break</span><span>;
</span><span>default</span><span>:
system.win </span>= "NT"<span>;
</span><span>break</span><span>;
}
}
}
}
</span><span>//</span><span>移动设备</span>
system.iphone = ua.indexOf("iPhone") > -1<span>;
system.ipod </span>= ua.indexOf("iPod") > -1<span>;
system.ipad </span>= ua.indexOf("iPad") > -1<span>;
system.nokiaN </span>= ua.indexOf("NokiaN") > -1<span>;
</span><span>//</span><span>window mobile</span><span>if</span>(system.win == "CE"<span>){
system.winMobile </span>=<span> system.win;
}</span><span>else</span><span>if</span>(system.win == "Ph"<span>){
</span><span>if</span>(/Windows Phone OS (d+.d+)/<span>.test(ua)){
system.win </span>= "Phone"<span>;
system.winMobile </span>= parseFloat(RegExp["$1"<span>]);
}
}
</span><span>//</span><span>检测iOS版本</span><span>if</span>(system.mac && ua.indexOf("Mobile") > -1<span>){
</span><span>if</span>(/CPU (?:iPhone )?OS (d+.d+)/<span>.test(ua)){
system.ios </span>= parseFloat(RegExp["$1"].replace("_","."<span>));
}</span><span>else</span><span>{
system.ios </span>= 2; <span>//</span><span>不能真正检测出来,所以只能猜测</span><span> }
}
</span><span>//</span><span>检测安卓版本</span><span>if</span>(/Android (d+.d+)/<span>.test(ua)){
system.android </span>= parseFloat(RegExp["$1"<span>]);
}
</span><span>//</span><span>检测游戏系统</span>
system.wii = ua.indexOf("wii") > -1<span>;
system.ps </span>= /playstation/<span>i.test(ua);
window.iClient.engine </span>=<span> engine;
window.iClient.browser </span>=<span> browser;
window.iClient.system </span>=<span> system;
})();</span>
原文:http://www.cnblogs.com/laixiangran/p/5014844.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!