当前位置:首页 > 操作系统 > Windows

检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统

            <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)!

相关教程推荐

其他课程推荐