JavaScript中的浏览器检测?

这个问题在这里已经有了答案:

  • 你如何检测浏览器的版本? 22个答案

  • navigator.sayswho= (function(){
        var ua= navigator.userAgent, tem,
        M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=/))/?s*(d+)/i) || [];
        if(/trident/i.test(M[1])){
            tem=  /brv[ :]+(d+)/g.exec(ua) || [];
            return 'IE '+(tem[1] || '');
        }
        if(M[1]=== 'Chrome'){
            tem= ua.match(/b(OPR|Edge)/(d+)/);
            if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
        }
        M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
        if((tem= ua.match(/version/(d+)/i))!= null) M.splice(1, 1, tem[1]);
        return M.join(' ');
    })();
    

    顾名思义,它会告诉您浏览器提供的名称和版本号。

    在多个浏览器上测试新代码时,对排序测试和错误结果很方便。


    我建议使用微小的JavaScript库Bowser,是的没有r。 它基于navigator.userAgent ,并且对所有浏览器(包括iphone,android等)都进行了很好的测试。

    https://github.com/ded/bowser

    你可以简单地说:

    if (bowser.msie && bowser.version <= 6) {
      alert('Hello IE');
    } else if (bowser.firefox){
      alert('Hello Foxy');
    } else if (bowser.chrome){
      alert('Hello Chrome');
    } else if (bowser.safari){
      alert('Hello Safari');
    } else if(bowser.iphone || bowser.android){
      alert('Hello mobile');
    }
    

    这是我写信给客户的信息

    var ua = navigator.userAgent.toLowerCase();
    var check = function(r) {
        return r.test(ua);
    };
    var DOC = document;
    var isStrict = DOC.compatMode == "CSS1Compat";
    var isOpera = check(/opera/);
    var isChrome = check(/chrome/);
    var isWebKit = check(/webkit/);
    var isSafari = !isChrome && check(/safari/);
    var isSafari2 = isSafari && check(/applewebkit/4/); // unique to
    // Safari 2
    var isSafari3 = isSafari && check(/version/3/);
    var isSafari4 = isSafari && check(/version/4/);
    var isIE = !isOpera && check(/msie/);
    var isIE7 = isIE && check(/msie 7/);
    var isIE8 = isIE && check(/msie 8/);
    var isIE6 = isIE && !isIE7 && !isIE8;
    var isGecko = !isWebKit && check(/gecko/);
    var isGecko2 = isGecko && check(/rv:1.8/);
    var isGecko3 = isGecko && check(/rv:1.9/);
    var isBorderBox = isIE && !isStrict;
    var isWindows = check(/windows|win32/);
    var isMac = check(/macintosh|mac os x/);
    var isAir = check(/adobeair/);
    var isLinux = check(/linux/);
    var isSecure = /^https/i.test(window.location.protocol);
    var isIE7InIE8 = isIE7 && DOC.documentMode == 7;
    
    var jsType = '', browserType = '', browserVersion = '', osName = '';
    var ua = navigator.userAgent.toLowerCase();
    var check = function(r) {
        return r.test(ua);
    };
    
    if(isWindows){
        osName = 'Windows';
    
        if(check(/windows nt/)){
            var start = ua.indexOf('windows nt');
            var end = ua.indexOf(';', start);
            osName = ua.substring(start, end);
        }
    } else {
        osName = isMac ? 'Mac' : isLinux ? 'Linux' : 'Other';
    } 
    
    if(isIE){
        browserType = 'IE';
        jsType = 'IE';
    
        var versionStart = ua.indexOf('msie') + 5;
        var versionEnd = ua.indexOf(';', versionStart);
        browserVersion = ua.substring(versionStart, versionEnd);
    
        jsType = isIE6 ? 'IE6' : isIE7 ? 'IE7' : isIE8 ? 'IE8' : 'IE';
    } else if (isGecko){
        var isFF =  check(/firefox/);
        browserType = isFF ? 'Firefox' : 'Others';;
        jsType = isGecko2 ? 'Gecko2' : isGecko3 ? 'Gecko3' : 'Gecko';
    
        if(isFF){
            var versionStart = ua.indexOf('firefox') + 8;
            var versionEnd = ua.indexOf(' ', versionStart);
            if(versionEnd == -1){
                versionEnd = ua.length;
            }
            browserVersion = ua.substring(versionStart, versionEnd);
        }
    } else if(isChrome){
        browserType = 'Chrome';
        jsType = isWebKit ? 'Web Kit' : 'Other';
    
        var versionStart = ua.indexOf('chrome') + 7;
        var versionEnd = ua.indexOf(' ', versionStart);
        browserVersion = ua.substring(versionStart, versionEnd);
    }else{
        browserType = isOpera ? 'Opera' : isSafari ? 'Safari' : '';
    }
    
    链接地址: http://www.djcxy.com/p/74137.html

    上一篇: Browser detection in JavaScript?

    下一篇: Mobile Device Browser File vs. WURFL for ASP.NET