На этот вопрос уже есть ответ:

Как определить точный браузер и версию с помощью JavaScript?

Я пишу некоторый код JavaScript для анализа введенных пользователем функций (для работы с таблицами). Проанализировав формулу, я мог бы преобразовать ее в JavaScript и запустить для нее функцию eval (), чтобы получить как дубликат user1693593 23 декабря ’17 в 7:03

Этот вопрос был задан ранее и уже имеет ответ. Если эти ответы не полностью отвечают на ваш вопрос, пожалуйста, задать новый вопрос Глядя на вывод

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').replace('Edg ', 'Edge ');
    }
    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, да нет. Он основан на navigator.userAgent возвращает

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

, затем просто примите Array в качестве ввода, например

// Opera 8.0  (UA detection to detect Blink/v8-powered Opera)
isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0 
isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0 
isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
// Internet Explorer 6-11
isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20 
isEdge = !isIE && !!window.StyleMedia;
// Chrome 1 
isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
isBlink = (isChrome || isOpera) && !!window.CSS;

Знайте об утечках памяти в Internet Explorer до

Обычно лучше избегать браузера конкретный код, где это возможно. Свойство JQuery $.support доступно для обнаружения поддержки определенных функций вместо того, чтобы полагаться на имя и версию браузера.

. Например, в Opera вы можете подделать Internet Explorer или экземпляр Firefox.

alt text

Подробное описание JQuery.support можно найти здесь: http://api.jquery.com/jQuery.support/

Теперь не рекомендуется в соответствии с jQuery.

Мы настоятельно рекомендуем использовать внешнюю библиотеку, такую ​​как Modernizr , вместо зависимости от свойств в jQuery.support Глядя на вывод

При кодировании веб-сайтов я всегда проверяю, что основные функции, такие как навигация, также доступны для пользователей, не являющихся js. Это может быть предметом обсуждения и может быть проигнорировано, если домашняя страница предназначена для специальной аудитории.

Крис хороший ответ & Amp ; элегантно, но он терпит неудачу, если значение является

<!DOCTYPE html>
<html>
<body>
<div id="example"></div>

<script>

txt = "<p>Browser CodeName: "   navigator.appCodeName   "</p>";
txt = "<p>Browser Name: "   navigator.appName   "</p>";
txt = "<p>Browser Version: "   navigator.appVersion   "</p>";
txt = "<p>Cookies Enabled: "   navigator.cookieEnabled   "</p>";
txt = "<p>Platform: "   navigator.platform   "</p>";
txt = "<p>User-agent header: "   navigator.userAgent   "</p>";
txt = "<p>User-agent language: "   navigator.systemLanguage   "</p>";

document.getElementById("example").innerHTML=txt;

</script>

</body>
</html>

Вся информация о веб-браузере содержится в объекте навигатора. Имя и версия там.

var appname = window.navigator.appName;

Источник: обнаружении браузера javascript

//Copy and paste this into your code/text editor, and try it

//Before you use this to fix compatability bugs, it's best to try inform the browser provider that you have found a bug and there latest browser may not be up to date with the current web standards

//Since none of the browsers use the browser identification system properly you need to do something a bit like this

//Write browser identification
document.write(navigator.userAgent   "<br>")

//Detect browser and write the corresponding name
if (navigator.userAgent.search("MSIE") >= 0){
    document.write('"MS Internet Explorer ');
    var position = navigator.userAgent.search("MSIE")   5;
    var end = navigator.userAgent.search("; Windows");
    var version = navigator.userAgent.substring(position,end);
    document.write(version   '"');
}
else if (navigator.userAgent.search("Chrome") >= 0){
document.write('"Google Chrome ');// For some reason in the browser identification Chrome contains the word "Safari" so when detecting for Safari you need to include Not Chrome
    var position = navigator.userAgent.search("Chrome")   7;
    var end = navigator.userAgent.search(" Safari");
    var version = navigator.userAgent.substring(position,end);
    document.write(version   '"');
}
else if (navigator.userAgent.search("Firefox") >= 0){
    document.write('"Mozilla Firefox ');
    var position = navigator.userAgent.search("Firefox")   8;
    var version = navigator.userAgent.substring(position);
    document.write(version   '"');
}
else if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0){//<< Here
    document.write('"Apple Safari ');
    var position = navigator.userAgent.search("Version")   8;
    var end = navigator.userAgent.search(" Safari");
    var version = navigator.userAgent.substring(position,end);
    document.write(version   '"');
}
else if (navigator.userAgent.search("Opera") >= 0){
    document.write('"Opera ');
    var position = navigator.userAgent.search("Version")   8;
    var version = navigator.userAgent.substring(position);
    document.write(version   '"');
}
else{
    document.write('"Other"');
}

//Use w3schools research the `search()` method as other methods are availible

Поскольку Internet Explorer 11 (IE11) вышел и не использует имя тега { *} больше я придумал вариант старой функции обнаружения: MSIE К сожалению, IE11 больше не имеет

navigator.sayswho= (function(){
    var N= navigator.appName, ua= navigator.userAgent, tem;

    // if IE11 
    if (new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})").exec(ua) !== null) {
        var M= ["Internet Explorer"];
        if(M && (tem= ua.match(/rv:([0-9]{1,}[.0-9]{0,})/))!= null) M[2]= tem[1];
        M= M? [M[0], M[2]]: [N, navigator.appVersion,'-?'];
        return M;
    }

    var M= ua.match(/(opera|chrome|safari|firefox|msie)/?s*(.?d (.d )*)/i);
    if(M && (tem= ua.match(/version/([.d] )/i))!= null) M[2]= tem[1];
    M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
    return M;
})();

небольшой библиотеки MSIE в его navigator.userAgent:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; BRI/2; BOIE9;ENUS; rv:11.0) like Gecko

. Почему вы хотите знать, какой браузер вы используете, это потому, что у каждого браузера есть свой собственный набор ошибок, и вы заканчиваете тем, что применяете обходные пути для браузера и конкретной версии, или сообщаете пользователь использует другой браузер!

var browser = navigator.appName;
var version = navigator.appVersion;

Обратите внимание, однако, что оба не обязательно отражают правду. Многие браузеры могут быть установлены как другие браузеры. Так, например, вы не всегда можете быть уверены, что пользователь на самом деле работает с IE6 или с Opera, которая притворяется IE6.

this Вот как я делаю собственный CSS для Internet Explorer: может вам помочь. Но имейте в виду, что обнаружение браузера не всегда является решением.

В моем файле JavaScript :

И затем в моем CSS-файле вы определяете каждый отдельный стиль:

function isIE () {
      var myNav = navigator.userAgent.toLowerCase();
      return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}

jQuery(document).ready(function(){
    if(var_isIE){
            if(var_isIE == 10){
                jQuery("html").addClass("ie10");
            }
            if(var_isIE == 8){
                jQuery("html").addClass("ie8");
                // you can also call here some function to disable things that 
                //are not supported in IE, or override browser default styles.
            }
        }
    });

Вместо жесткого кодирования веб-браузеров вы можете отсканировать пользовательский агент, чтобы найти имя браузера:

.ie10 .some-class span{
    .......
}
.ie8 .some-class span{
    .......
}

Я протестировал это в Safari, Chrome и Firefox. Дайте мне знать, если вы обнаружили, что это не работает в браузере.

navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z] ?Web[Kk]it)[A-Z][a-z] /g)[0]

Safari:

  • Вы даже можете изменить это, чтобы получить версию браузера, если хотите. Обратите внимание, что есть лучшие способы получить версию браузера "Safari"
  • $. Import_js () "Chrome"
  • , точка с запятой автоматически вставляется перед ограниченным токеном. "Firefox"

Если вам нужна функция, которая возвращает браузер, а также версию, здесь есть улучшение по сравнению с первоначальным ответом:

navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z] ?Web[Kk]it)[A-Z][a-z] /[d.] /g)[0].split('/')

Ответ Шона

Firefox/39.0    

Если вам нужна функция, которая возвращает браузер как кроме версии, вот улучшение по сравнению с первоначальным ответом:

navigator.browserInfo = 
(
    function()
    {
        var browser = '';
        var version = '';
        var idString = '';

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

        //IE will be identified as 'Trident' and a different version number. The name must be corrected to 'Internet Explorer' and the correct version identified.
        //ie correction
        if(/trident/i.test(M[1]))
        {
            tem = /brv[ :] (d .?d*)/g.exec(ua) || [];
            browser = 'Internet Explorer';
            version = tem[1];
        }

        //firefox
        else if(/firefox/i.test(M[1]))
        {
            tem = /brv[ :] (d .?d*)/g.exec(ua) || [];
            browser = 'Firefox';
            version = tem[1];
        }

        //safari
        else if(/safari/i.test(M[1]))
        {
            tem = ua.match(/bVersion/(d .?d*s*w )/);
            browser = 'Safari';
            version = tem[1];
        }

        //If 'Chrome' is found, it may be another browser. 
        else if(M[1] === 'Chrome')
        {
            //opera
            var temOpr = ua.match(/b(OPR)/(d .?d*.?d*.?d*)/);
            //edge
            var temEdge = ua.match(/b(Edge)/(d .?d*)/);
            //chrome
            var temChrome = ua.match(/b(Chrome)/(d .?d*.?d*.?d*)/);

            //a genuine 'Chrome' reading will result from ONLY temChrome not being null.
            var genuineChrome = temOpr == null && temEdge == null && temChrome != null;

            if(temOpr != null)
            {
                browser = temOpr[1].replace('OPR', 'Opera');
                version = temOpr[2];
            }

            if(temEdge != null)
            {
                browser = temEdge[1];
                version = temEdge[2];
            }

            if(genuineChrome)
            {
                browser = temChrome[1];
                version = temChrome[2];
            }
        }
        //There will be some odd balls, so if you wish to support those browsers, add functionality to display those browsers as well.

        if(browser == '' || version == '')
        {
            idString = 'We couldn't find your browser, but you can still use the site';
        }
        else
        {
            idString = browser   ' version '   version;
        }

        alert('Your browser is '   idString);

        //store the type of browser locally
        if(typeof(Storage) !== "undefined")
        {
            //Store
            localStorage.setItem('browser', browser);
            localStorage.setItem('version', version);
        } 
        else
        {
            alert('local storage not available');
        }
    }
)();

При этом он также сохраняет результат локально, поэтому нет необходимости запускать эту проверку каждый раз.

Вот что я использую:

var ua = navigator.userAgent;
var info = {
        browser: /Edge/d /.test(ua) ? 'ed' : /MSIE 9/.test(ua) ? 'ie9' : /MSIE 10/.test(ua) ? 'ie10' : /MSIE 11/.test(ua) ? 'ie11' : /MSIEsd/.test(ua) ? 'ie?' : /rv:11/.test(ua) ? 'ie11' : /FirefoxWd/.test(ua) ? 'ff' : /Chrom(e|ium)Wd|CriOSWd/.test(ua) ? 'gc' : /bSafariWd/.test(ua) ? 'sa' : /bOperaWd/.test(ua) ? 'op' : /bOPRWd/i.test(ua) ? 'op' : typeof MSPointerEvent !== 'undefined' ? 'ie?' : '',
        os: /Windows NT 10/.test(ua) ? "win10" : /Windows NT 6.0/.test(ua) ? "winvista" : /Windows NT 6.1/.test(ua) ? "win7" : /Windows NT 6.d/.test(ua) ? "win8" : /Windows NT 5.1/.test(ua) ? "winxp" : /Windows NT [1-5]./.test(ua) ? "winnt" : /Mac/.test(ua) ? "mac" : /Linux/.test(ua) ? "linux" : /X11/.test(ua) ? "nix" : "",
        touch: 'ontouchstart' in document.documentElement,
        mobile: /IEMobile|Windows Phone|Lumia/i.test(ua) ? 'w' : /iPhone|iP[oa]d/.test(ua) ? 'i' : /Android/.test(ua) ? 'a' : /BlackBerry|PlayBook|BB10/.test(ua) ? 'b' : /Mobile Safari/.test(ua) ? 's' : /webOS|Mobile|Tablet|Opera Mini|bCrMo/|Opera Mobi/i.test(ua) ? 1 : 0,
        tablet: /Tablet|iPad/i.test(ua),
};

info свойства:

  • browser: gc для Google Chrome ; ie9 Я обнаружил, что экспериментирование с различными методами является хорошей проверкой работоспособности даже после хорошего справиться о том, что их различные использования и возможности. ie11 для IE {*** } ie? для старого или неизвестного IE ; ed для Edge ; ff для Firefox ; sa для Safari ; op для Opera.
  • os: macwin7win8win10winntwinxpwinvistalinuxnix
  • mobile: a для Android ; i для iOS (iPhone iPad) ; w для Windows Phone ; b в Генераторе случайных шестнадцатеричных цветовых кодов в JavaScript просто потрясающий. Использование: s для необнаруженного мобильного телефона с запущенным Safari ; 1 для другого необнаруженного мобильного телефона ; 0 для немобильных
  • touch: true устройств с сенсорным экраном, включая сенсорные ноутбуки / ноутбуки, в которых есть как мышь, так и сенсорный экран ; false без поддержки касания
  • tablet: true или false

https://jsfiddle.net/oriadam/ncb4n882/

Вы можете использовать библиотеку jQuery для определения версии браузера.

Пример:

jQuery.browser.version

(см. метод 2 / 2b).

Дополнительная информация: http://api.jquery.com/jQuery.browser/

(вам нужно немного прокрутить)

 var isOpera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0;
        // Opera 8.0  (UA detection to detect Blink/v8-powered Opera)
        var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0 
        var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
        // At least Safari 3 : "[object HTMLElementConstructor]"
        var isChrome = !!window.chrome;                          // Chrome 1 
        var isIE = /*@cc_on!@*/false; 

вы можете прочитать подробнее Как обнаружить браузер Safari, Chrome, IE, Firefox и Opera?

Я знаю, что СПОСОБЕН опоздать на этот вопрос, но решил, что я брошу сюда свои отрывки. Многие ответы здесь в порядке, и, как можно заметить, обычно лучше использовать feature detection, а не полагаться на userAgent. Однако, если вы собираетесь пойти по этому пути, я написал полный фрагмент, а также альтернативную реализацию jQuery, чтобы заменить ограниченный $.browser Глядя на вывод


Vanilla JS

Мой первый фрагмент просто добавляет четыре свойства к navigator в любом случае для всех классных массивов высшего порядка :-) Используйте browser, version, mobile, & Amp ; jsFiddle webkit Глядя на вывод

Буду признателен, если кто-то, использующий Chrome, сможет узнать, можете ли вы использовать


/** navigator [extended]
 *  Simply extends Browsers navigator Object to include browser name, version number, and mobile type (if available).
 *
 *  @property {String} browser The name of the browser.
 *  @property {Double} version The current Browser version number.
 *  @property {String|Boolean} mobile Will be `false` if is not found to be mobile device. Else, will be best guess Name of Mobile Device (not to be confused with browser name)
 *  @property {Boolean} webkit If is webkit or not.
 */
;(function(){function c(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return"MSIE";case /Chrome/.test(navigator.userAgent):return"Chrome";case /Opera/.test(navigator.userAgent):return"Opera";case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):return/Silk/i.test(navigator.userAgent)?"Silk":"Kindle";case /BlackBerry/.test(navigator.userAgent):return"BlackBerry";case /PlayBook/.test(navigator.userAgent):return"PlayBook";case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):return"Blackberry";
case /Android/.test(navigator.userAgent):return"Android";case /Safari/.test(navigator.userAgent):return"Safari";case /Firefox/.test(navigator.userAgent):return"Mozilla";case /Nokia/.test(navigator.userAgent):return"Nokia"}}catch(a){console.debug("ERROR:setBrowsert",a)}}function d(){try{switch(!0){case /Sony[^ ]*/i.test(navigator.userAgent):return"Sony";case /RIM Tablet/i.test(navigator.userAgent):return"RIM Tablet";case /BlackBerry/i.test(navigator.userAgent):return"BlackBerry";case /iPhone/i.test(navigator.userAgent):return"iPhone";
case /iPad/i.test(navigator.userAgent):return"iPad";case /iPod/i.test(navigator.userAgent):return"iPod";case /Opera Mini/i.test(navigator.userAgent):return"Opera Mini";case /IEMobile/i.test(navigator.userAgent):return"IEMobile";case /BB[0-9]{1,}; Touch/i.test(navigator.userAgent):return"BlackBerry";case /Nokia/i.test(navigator.userAgent):return"Nokia";case /Android/i.test(navigator.userAgent):return"Android"}}catch(a){console.debug("ERROR:setMobilet",a)}return!1}function e(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return/Trident/i.test(navigator.userAgent)&&
/rv:([0-9]{1,}[.0-9]{0,})/.test(navigator.userAgent)?parseFloat(navigator.userAgent.match(/rv:([0-9]{1,}[.0-9]{0,})/)[1].replace(/[^0-9.]/g,"")):/MSIE/i.test(navigator.userAgent)&&0<parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9.]/g,""))?parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9.]/g,"")):"Edge";case /Chrome/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9.]/g,""));case /Opera/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].replace(/[^0-9.]/g,
""));case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):if(/Silk/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Silk/")[1].split("Safari")[0].replace(/[^0-9.]/g,""));if(/Kindle/i.test(navigator.userAgent)&&/Version/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9.]/g,""));case /BlackBerry/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("/")[1].replace(/[^0-9.]/g,
""));case /PlayBook/.test(navigator.userAgent):case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):case /Safari/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9.]/g,""));case /Firefox/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split(/Firefox//i)[1].replace(/[^0-9.]/g,""));case /Android/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9.]/g,
""));case /Nokia/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Browser")[1].replace(/[^0-9.]/g,""))}}catch(a){console.debug("ERROR:setVersiont",a)}}a:{try{if(navigator&&navigator.userAgent){navigator.browser=c();navigator.mobile=d();navigator.version=e();var b;b:{try{b=/WebKit/i.test(navigator.userAgent);break b}catch(a){console.debug("ERROR:setWebkitt",a)}b=void 0}navigator.webkit=b;break a}}catch(a){}throw Error("Browser does not support `navigator` Object |OR| has undefined `userAgent` property.");
}})();
/*  simple c & p of above   */

var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
    // Opera 8.0  (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0 
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
    // At least Safari 3 : "[object HTMLElementConstructor]"
var isChrome = !!window.chrome && !isOpera;              // Chrome 1 
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20 
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1 
var output = 'Detecting browsers by ducktyping:<hr>';
output  = 'isFirefox: '   isFirefox   '<br>';
output  = 'isChrome: '   isChrome   '<br>';
output  = 'isSafari: '   isSafari   '<br>';
output  = 'isOpera: '   isOpera   '<br>';
output  = 'isIE: '   isIE   '<br>';
output  = 'isIE Edge: '   isEdge   '<br>';
document.body.innerHTML = output;

Не совсем то, что вы хотите, но близко к нему:

var jscriptVersion = /*@cc_on @if(@_jscript) @_jscript_version @else @*/ false /*@end @*/;
var geckoVersion = navigator.product === 'Gecko' && navigator.productSub;
var operaVersion = 'opera' in window && 'version' in opera && opera.version();

Переменные будут содержать соответствующую версию или false, если она недоступна.

аналогично window.chrome. Иногда нам нужен простой метод, чтобы проверить, является ли браузер IE или нет. Вот как это может быть: window.opera Глядя на вывод

или упрощенный метод siva:

 var isMSIE = (/trident/i).test(navigator.userAgent);

 if(isMSIE)
 {
  /* do something for ie */
 }
 else
 {
  /* do something else */
 }

другие браузеры IE содержат строку MSIE в свойстве userAgent и могут быть перехвачены им.

 if(!!navigator.systemLanguage)
 {
  /* do something for ie */
 }
 else
 {
  /* do something else */
 }

Проверка MSIE v.11:

if( (/trident/i).test(navigator.userAgent) && (/rv:/i).test(navigator.userAgent) )
{
  /* do something for ie 11 */
}

Я делаю эту маленькую функцию, надеюсь, она поможет. Здесь вы можете найти последнюю версию

В ES6 использование navigator.systemLanguage, который возвращает «en-US», когда другие браузеры возвращают undefined Глядя на вывод

<script>
    var lang = navigator.systemLanguage;
    if (lang!='en-US'){document.write("Well, this is not internet explorer");}
    else{document.write("This is internet explorer");}
</script>

browserDetection Ниже фрагмент кода покажет, как вы можете отображать элементы пользовательского интерфейса, зависит от версии IE и браузера

function detectBrowser(userAgent){
  var chrome  = /.*(Chrome/).*(Safari/).*/g;
  var firefox = /.*(Firefox/).*/g;
  var safari  = /.*(Version/).*(Safari/).*/g;
  var opera   = /.*(Chrome/).*(Safari/).*(OPR/).*/g

  if(opera.exec(userAgent))
    return "Opera"
  if(chrome.exec(userAgent))
    return "Chrome"
  if(safari.exec(userAgent))
    return "Safari"
  if(firefox.exec(userAgent))
    return "Firefox"
}

Ниже приведен код, как мы можем получить версию IE

$(document).ready(function () {

var msiVersion = GetMSIieversion();
if ((msiVersion <= 8) && (msiVersion != false)) {

    //Show UI elements specific to IE version 8 or low

    } else {
    //Show UI elements specific to IE version greater than 8 and for other browser other than IE,,ie..Chrome,Mozila..etc
    }
}
);

С помощью jQuery :

function GetMSIieversion() {

var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
    // IE 10 or older => return version number
    return parseInt(ua.substring(msie   5, ua.indexOf('.', msie)), 10);
}

var trident = ua.indexOf('Trident/');
if (trident > 0) {
    // IE 11 => return version number
    var rv = ua.indexOf('rv:');
    return parseInt(ua.substring(rv   3, ua.indexOf('.', rv)), 10);
}

var edge = ua.indexOf('Edge/');
if (edge > 0) {
    // Edge (IE 12 ) => return version number
    return parseInt(ua.substring(edge   5, ua.indexOf('.', edge)), 10);
}

// other browser like Chrome,Mozila..etc
return false;

}

дает что-то вроде:

$.browser

Javascript-эквивалент функции zip в Python — Переполнение стека

Object {chrome: true, version: "26.0.1410.63", webkit: true}