《JavaScript進階程式設計》閱讀筆記(十六):javascript檢測瀏覽器和作業系統-detect.js

來源:互聯網
上載者:User
檢測瀏覽器的方式

  1、對象特徵檢測法:判斷瀏覽器能力的通用方法。如果更關注瀏覽器的能力而不在乎它的實際身份,就可以使用這種檢測方法。常見的原生Ajax寫法中就用這種方法來建立XMLHttpRequest:

IXHR: function(){    if(window.ActiveXObject){            XHR=new ActiveXObject('Microsoft.XMLHTTP');        }else if(window.XMLHttpRequest){            XHR=new XMLHttpRequest();        }else{            return null;        }}

  2、user-agent字串檢測法:通過能瀏覽器的user-agent字串進行解析來判斷,判斷方法在下文的detect.js中

檢測平台/作業系統

  通過navigator折platform屬性和user-agent字串來判斷,判斷方法在下文的detect.js中

檢測瀏覽器和作業系統-detect.js
var sUserAgent = navigator.userAgent;var fAppVersion = parseFloat(navigator.appVersion);function compareVersions(sVersion1, sVersion2) {    var aVersion1 = sVersion1.split(".");    var aVersion2 = sVersion2.split(".");       if (aVersion1.length > aVersion2.length) {        for (var i=0; i < aVersion1.length - aVersion2.length; i++) {            aVersion2.push("0");        }    } else if (aVersion1.length < aVersion2.length) {        for (var i=0; i < aVersion2.length - aVersion1.length; i++) {            aVersion1.push("0");        }       }       for (var i=0; i < aVersion1.length; i++) {         if (aVersion1[i] < aVersion2[i]) {            return -1;        } else if (aVersion1[i] > aVersion2[i]) {            return 1;        }       }       return 0;}var isOpera = sUserAgent.indexOf("Opera") > -1;var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;if (isOpera) {    var fOperaVersion;    if(navigator.appName == "Opera") {        fOperaVersion = fAppVersion;    } else {        var reOperaVersion = new RegExp("Opera (//d+//.//d+)");        reOperaVersion.test(sUserAgent);        fOperaVersion = parseFloat(RegExp["$1"]);    }    isMinOpera4 = fOperaVersion >= 4;    isMinOpera5 = fOperaVersion >= 5;    isMinOpera6 = fOperaVersion >= 6;    isMinOpera7 = fOperaVersion >= 7;    isMinOpera7_5 = fOperaVersion >= 7.5;}var isKHTML = sUserAgent.indexOf("KHTML") > -1              || sUserAgent.indexOf("Konqueror") > -1              || sUserAgent.indexOf("AppleWebKit") > -1;             var isMinSafari1 = isMinSafari1_2 = false;var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;if (isKHTML) {    isSafari = sUserAgent.indexOf("AppleWebKit") > -1;    isKonq = sUserAgent.indexOf("Konqueror") > -1;    if (isSafari) {        var reAppleWebKit = new RegExp("AppleWebKit///(//d+(?://.//d*)?)");        reAppleWebKit.test(sUserAgent);        var fAppleWebKitVersion = parseFloat(RegExp["$1"]);        isMinSafari1 = fAppleWebKitVersion >= 85;        isMinSafari1_2 = fAppleWebKitVersion >= 124;    } else if (isKonq) {        var reKonq = new RegExp("Konqueror///(//d+(?://.//d+(?://.//d)?)?)");        reKonq.test(sUserAgent);        isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;        isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;        isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;        isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;    }   }var isIE = sUserAgent.indexOf("compatible") > -1           && sUserAgent.indexOf("MSIE") > -1           && !isOpera;          var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;if (isIE) {    var reIE = new RegExp("MSIE (//d+//.//d+);");    reIE.test(sUserAgent);    var fIEVersion = parseFloat(RegExp["$1"]);    isMinIE4 = fIEVersion >= 4;    isMinIE5 = fIEVersion >= 5;    isMinIE5_5 = fIEVersion >= 5.5;    isMinIE6 = fIEVersion >= 6.0;}var isMoz = sUserAgent.indexOf("Gecko") > -1            && !isKHTML;var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;if (isMoz) {    var reMoz = new RegExp("rv:(//d+//.//d+(?://.//d+)?)");    reMoz.test(sUserAgent);    isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;    isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;    isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;}var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML            && (sUserAgent.indexOf("Mozilla") == 0)            && (navigator.appName == "Netscape")            && (fAppVersion >= 4.0 && fAppVersion < 5.0);var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;if (isNS4) {    isMinNS4 = true;    isMinNS4_5 = fAppVersion >= 4.5;    isMinNS4_7 = fAppVersion >= 4.7;    isMinNS4_8 = fAppVersion >= 4.8;}var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC")            || (navigator.platform == "Macintosh");var isUnix = (navigator.platform == "X11") && !isWin && !isMac;var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;var isMac68K = isMacPPC = false;var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;if (isWin) {    isWin95 = sUserAgent.indexOf("Win95") > -1              || sUserAgent.indexOf("Windows 95") > -1;    isWin98 = sUserAgent.indexOf("Win98") > -1              || sUserAgent.indexOf("Windows 98") > -1;    isWinME = sUserAgent.indexOf("Win 9x 4.90") > -1              || sUserAgent.indexOf("Windows ME") > -1;    isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1              || sUserAgent.indexOf("Windows 2000") > -1;    isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1              || sUserAgent.indexOf("Windows XP") > -1;    isWinNT4 = sUserAgent.indexOf("WinNT") > -1              || sUserAgent.indexOf("Windows NT") > -1              || sUserAgent.indexOf("WinNT4.0") > -1              || sUserAgent.indexOf("Windows NT 4.0") > -1              && (!isWinME && !isWin2K && !isWinXP);}if (isMac) {    isMac68K = sUserAgent.indexOf("Mac_68000") > -1               || sUserAgent.indexOf("68K") > -1;    isMacPPC = sUserAgent.indexOf("Mac_PowerPC") > -1               || sUserAgent.indexOf("PPC") > -1; }if (isUnix) {    isSunOS = sUserAgent.indexOf("SunOS") > -1;    if (isSunOS) {        var reSunOS = new RegExp("SunOS (//d+//.//d+(?://.//d+)?)");        reSunOS.test(sUserAgent);        isMinSunOS4 = compareVersions(RegExp["$1"], "4.0") >= 0;        isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0;        isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0;    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.