我一直在寻找可以检测访问网站的用户使用的是火狐3还是火狐4的代码。我所找到的只是检测浏览器类型而不是版本的代码。

如何检测这样的浏览器版本?


当前回答

对于任何使用angular的PWA应用程序,你都可以在index.html -的body部分中检查浏览器是否受支持

<body>
    <div id="browser"></div>
    <script>
        var operabrowser = true;
        operabrowser = (navigator.userAgent.indexOf('Opera Mini') > -1);
        if (operabrowser) {
            txt = "<p>Browser not supported use different browser...</p>";
            document.getElementById("browser").innerHTML = txt;
        }
    </script>
</body>

其他回答

var ua = navigator.userAgent;

if (/Firefox\//.test(ua))
   var Firefox = /Firefox\/([0-9\.A-z]+)/.exec(ua)[1];

我使用这段javascript代码的基础上,我可以在其他帖子中找到。

var browserHelper = function () { var self = {}; /// IE 6+ self.isIEBrowser = function () { return /*@cc_on!@*/false || !!document.documentMode; }; /// Opera 8.0+ self.isOperaBrowser = function () { return (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; }; /// Firefox 1.0+ self.isFirefoxBrowser = function () { return typeof InstallTrigger !== 'undefined'; }; /// Safari 3.0+ self.isSafariBrowser = function () { return /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification)); }; /// Edge 20+ self.isEdgeBrowser = function () { return !self.isIEBrowser() && !!window.StyleMedia; }; /// Chrome 1 - 87 self.isChromeBrowser = function () { return (!!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime)) || (navigator.userAgent.indexOf("Chrome") > -1) && !self.isOperaBrowser(); }; /// Edge (based on chromium) self.isEdgeChromiumBrowser = function () { return self.isChromeBrowser() && (navigator.userAgent.indexOf("Edg") != -1); }; /// Blink self.isBlinkBasedOnBrowser = function () { return (self.isChromeBrowser() || self.isOperaBrowser()) && !!window.CSS; }; /// Returns the name of the navigator self.browserName = function () { if (self.isOperaBrowser()) return "Opera"; if (self.isEdgeBrowser()) return "Edge"; if (self.isEdgeChromiumBrowser()) return "Edge (based on chromium)"; if (self.isFirefoxBrowser()) return "Firefox"; if (self.isIEBrowser()) return "Internet Explorer"; if (self.isSafariBrowser()) return "Safari"; if (self.isChromeBrowser()) return "Chrome"; return "Unknown"; }; return self; }; var bName = document.getElementById('browserName'); bName.innerText = browserHelper().browserName(); #browserName { font-family: Arial, Verdana; font-size: 1.2rem; color: #ff8000; text-align: center; border: 2px solid #ff8000; border-radius: .5rem; padding: .5rem; max-width: 25%; margin: auto; } <div id="browserName"></div>

使用这个:http://www.quirksmode.org/js/detect.html

alert(BrowserDetect.browser); // will say "Firefox"
alert(BrowserDetect.version); // will say "3" or "4"

加上我自己对赫尔曼答案的实现。我需要操作系统检测,所以它被添加。还包括一些ES6代码(因为我们有一个转译器),你可能需要es5化。

detectClient() {
    let nav = navigator.appVersion,
        os = 'unknown',
        client = (() => {
            let agent = navigator.userAgent,
                engine = agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [],
                build;

            if(/trident/i.test(engine[1])){
                build = /\brv[ :]+(\d+)/g.exec(agent) || [];
                return {browser:'IE', version:(build[1] || '')};
            }

            if(engine[1] === 'Chrome'){
                build = agent.match(/\bOPR\/(\d+)/);

                if(build !== null) {
                    return {browser: 'Opera', version: build[1]};
                }
            }

            engine = engine[2] ? [engine[1], engine[2]] : [navigator.appName, nav, '-?'];

            if((build = agent.match(/version\/(\d+)/i)) !== null) {
                engine.splice(1, 1, build[1]);
            }

            return {
              browser: engine[0],
              version: engine[1]
            };
        })();

    switch (true) {
        case nav.indexOf('Win') > -1:
            os = 'Windows';
        break;
        case nav.indexOf('Mac') > -1:
            os = 'MacOS';
        break;
        case nav.indexOf('X11') > -1:
            os = 'UNIX';
        break;
        case nav.indexOf('Linux') > -1:
            os = 'Linux';
        break;
    }        

    client.os = os;
    return client;
}

返回:对象{浏览器:"Chrome",版本:"50",操作系统:"UNIX"}

我想分享我为我必须解决的问题而编写的代码。它在大多数主流浏览器中都进行了测试,对我来说,它就像一个魅力!

似乎这段代码与其他答案非常相似,但它进行了修改,以便我可以使用它而不是我最近错过的jquery浏览器对象,当然它是上述代码的组合,从我的部分我做了一些改进:

(function($, ua){

var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [],
    tem, 
    res;

if(/trident/i.test(M[1])){
    tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
    res = 'IE ' + (tem[1] || '');
}
else if(M[1] === 'Chrome'){
    tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
    if(tem != null) 
        res = tem.slice(1).join(' ').replace('OPR', 'Opera');
    else
        res = [M[1], M[2]];
}
else {
    M = M[2]? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
    if((tem = ua.match(/version\/(\d+)/i)) != null) M = M.splice(1, 1, tem[1]);
    res = M;
}

res = typeof res === 'string'? res.split(' ') : res;

$.browser = {
    name: res[0],
    version: res[1],
    msie: /msie|ie/i.test(res[0]),
    firefox: /firefox/i.test(res[0]),
    opera: /opera/i.test(res[0]),
    chrome: /chrome/i.test(res[0]),
    edge: /edge/i.test(res[0])
}

})(typeof jQuery != 'undefined'? jQuery : window.$, navigator.userAgent);

 console.log($.browser.name, $.browser.version, $.browser.msie); 
// if IE 11 output is: IE 11 true