博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《JavaScript高级程序设计》阅读笔记(十六):javascript检测浏览器和操作系统-detect.js...
阅读量:6989 次
发布时间:2019-06-27

本文共 6065 字,大约阅读时间需要 20 分钟。

检测浏览器的方式

  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;    }}
 
 
 
 

本文转自博客园博客,原文链接:,如需转载请自行联系原作者

你可能感兴趣的文章
Spring下redis的配置
查看>>
vs2010在进行数据架构比较时报'text lines should not be null'错误
查看>>
jeecg入门操作—表单界面
查看>>
网页音乐制作器(网页钢琴)-- MusicMaker
查看>>
oracle优化:避免全表扫描(高水位线)
查看>>
对超级课程表产品的一些个人小看法
查看>>
词频统计 效能分析
查看>>
Linux终极shell-zsh的完美配置方案!——oh-my-zsh
查看>>
MYSQL 函数、自定义函数 function
查看>>
Python爬虫之简单爬虫框架实现
查看>>
python isinstance内建函数的使用
查看>>
老师不能把你怎样,但外面的世界可以!
查看>>
css居中div的几种常用方法
查看>>
css3
查看>>
C# Window编程随记——ClickOnce程序部署
查看>>
小白系列-免费广告路由器web认证设置(2)
查看>>
Top 16 Java 应用类 - 这些功能再也不用自己写了
查看>>
面试题之矩阵与转置矩阵相乘
查看>>
linux光盘、U盘的挂载与卸载
查看>>
linux sudo命令
查看>>