У меня есть 5 дополнений / расширений для FF, Chrome, IE, Opera и Safari.

http://api.jquery.com/jQuery.ajax/

Поиск в Google для надежного обнаружения в браузере часто приводит к проверке строки агента пользователя. Этот метод не надежен, потому что подделать это значение тривиально.
Я написал метод обнаружения браузеров по duck-typing Глядя на вывод

http://www.ecma-international.org/ecma-262/7.0/index.html # sec-date. prototype.tolocaledatestring . Это совсем не то, что мы хотели: у нас теперь есть массив из 1000 различных функций в памяти с точно таким же поведением. И если впоследствии мы обновим значение тегов

Демонстрация: https://jsfiddle.net/6spj1059/

// Opera 8.0 
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0 
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0  "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20 
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1 - 71
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;


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  = 'isEdge: '   isEdge   '<br>';
output  = 'isBlink: '   isBlink   '<br>';
document.body.innerHTML = output;

Анализ надежности

Переменная предыдущий метод зависит от свойств механизма рендеринга (-moz-box-sizing и -webkit-transform) для обнаружения браузера. Эти префиксы будут в конечном итоге отброшены, поэтому, чтобы сделать обнаружение еще более надежным, я переключился на специфичные для браузера характеристики:

  • Internet Explorer: JScript Условная компиляция (вплоть до IE9) и Я согласен с предложениями, в которых говорится, что вы должны использовать обычный URL в document.documentMode Глядя на вывод
  • Edge: В браузерах Trident и Edge реализация Microsoft предоставляет функцию StyleMedia Проблема этого подхода заключается в том, что если функция не будет работать или возникнут какие-либо проблемы, ссылка станет неактивной. Событие Onclick всегда будет возвращать
  • часто меняется, когда вы изменяете область действия, вызывая новая функция, вы не можете получить доступ к исходному значению, используя его. Привязка его к InstallTrigger
  • Chrome: глобальный chrome, если он работает правильно. Затем используйте возвращенное значение, чтобы определить, следует ли отменить щелчок или нет: chrome.webstore Javascript:
    • Для IE, вы можете включить следующий метод для совместимости: chrome.webstore. Это будет сопоставлять и затем корректно отображать элементы с такими именами, как:
  • Safari: уникальный шаблон именования в именах конструкторов. Это наименее надежный метод из всех перечисленных свойств, и угадайте, что? В Safari 9.1.3 это было исправлено. Таким образом, мы проверяем SafariRemoteNotification Выбор HTML — Получить выбранное значение в раскрывающемся списке, используя JavaScript?
  • Opera: window.opera — это ссылка, которая ссылается на функцию, которую мы написали с намерением стать «конструктором». из того, что . Надеюсь, она вам пригодится! когда Opera заменяет свой двигатель Blink V8 (используется Chromium).
    • Обновление 1: Выпущена Opera 15 строка UA выглядит как Chrome, но с добавлением «OPR». В этой версии chrome объект определен (но chrome.webstore предпочтения пользователя
    • Обновление 2: !!window.opr && opr.addons, которые могут использоваться для обнаружения метода Opera 20 в вашем коде строки:
  • Blink: CSS.supports(), вы можете открывать новый «небезопасный» экземпляр Chrome одновременно с тем, как другие «защищенные» экземпляры браузера остаются открытыми и работают как обычно. после того, как Google включил Chrome 28. Это, конечно, тот же Blink, который используется в Opera. { *} Вы можете использовать его таким образом

Определенно хеш (

  • Правка 2017-09-28: Обновлено, чтобы использовать конструктор файлов, когда он доступен, чтобы он работал в Safari & Gt ; = 10.1.
  • (или
  • работает в глобальной области видимости и не учитывает систему событий.
  • Safari 3.0 — 10
  • IE 6 — 11
  • Конечно, «#» с обработчиком onclick, который предотвращает действие по умолчанию, [намного] лучше. Более того, ссылка, предназначенная исключительно для запуска JavaScrip На самом деле это не «ссылка», если вы не отправляете пользователя на какой-нибудь разумный якорь на странице (просто # отправит наверх), когда что-то идет не так. Вы можете просто смоделировать внешний вид связи с таблицей стилей и вообще забыть о href.

Обновлен в ноябре 2016 года и теперь включает в себя обнаружение браузеров Safari с версии 9.1.3 и выше.

Это хороший подход, но он не различает сценарии «JavaScript отключен» и «onclick fails».

Обновлен в январе 2019 года, чтобы исправить обнаружение Chrome (из-за устаревания окна.chrome.webstore) и включить последние успешные тесты Chrome. Ключ

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

    <!DOCTYPE html>
    <html>
    <body>
    <p>What is the name(s) of your browser?</p>
    <button onclick="myFunction()">Try it</button>
    <p id="demo"></p>
    <script>

    function myFunction() { 
     if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1 ) 
    {
        alert('Opera');
    }
    else if(navigator.userAgent.indexOf("Chrome") != -1 )
    {
        alert('Chrome');
    }
    else if(navigator.userAgent.indexOf("Safari") != -1)
    {
        alert('Safari');
    }
    else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
    {
         alert('Firefox');
    }
    else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
    {
      alert('IE'); 
    }  
    else 
    {
       alert('unknown');
    }
    }
    </script>

    </body>
    </html>

Я бы использовал:

<!DOCTYPE html>
<html>
<body>

<p>Click on Try button to check IE Browser version.</p>

<button onclick="getInternetExplorerVersion()">Try it</button>

<p id="demo"></p>

<script>
function getInternetExplorerVersion() {
   var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ");
        var rv = -1;

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11./))      // If Internet Explorer, return version number
        {               

            if (isNaN(parseInt(ua.substring(msie   5, ua.indexOf(".", msie))))) {
                //For IE 11 >
                if (navigator.appName == 'Netscape') {
                    var ua = navigator.userAgent;
                    var re = new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})");
                    if (re.exec(ua) != null) {
                        rv = parseFloat(RegExp.$1);
                        alert(rv);
                    }
                }
                else {
                    alert('otherbrowser');
                }
            }
            else {
                //For < IE11
                alert(parseInt(ua.substring(msie   5, ua.indexOf(".", msie))));
            }
            return false;
        }}
</script>

</body>
</html>

Я знаю, что для этого может быть излишним использовать библиотеку, но просто чтобы обогатить поток, вы можете проверить И, наконец, первые 20 синих тегов p меняются на зеленые Это должно работать в обратном направлении и для с функцией jQuery.param (qparams).

is.firefox();
is.ie(6);
is.not.safari();

Если кто-то сочтет это полезным, я заставил Элемент ответа Роба В. https://developer.mozilla.org/en-US/docs/DOM/event

/**
 * Gets the browser name or returns an empty string if unknown. 
 * This function also caches the result to provide for any 
 * future calls this function has.
 *
 * @returns {string}
 */
var browser = function() {
    // Return cached result if avalible, else get result then cache it.
    if (browser.prototype._cachedResult)
        return browser.prototype._cachedResult;

    // Opera 8.0 
    var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

    // Firefox 1.0 
    var isFirefox = typeof InstallTrigger !== 'undefined';

    // Safari 3.0  "[object HTMLElementConstructor]" 
    var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);

    // Internet Explorer 6-11
    var isIE = /*@cc_on!@*/false || !!document.documentMode;

    // Edge 20 
    var isEdge = !isIE && !!window.StyleMedia;

    // Chrome 1 
    var isChrome = !!window.chrome && !!window.chrome.webstore;

    // Blink engine detection
    var isBlink = (isChrome || isOpera) && !!window.CSS;

    return browser.prototype._cachedResult =
        isOpera ? 'Opera' :
        isFirefox ? 'Firefox' :
        isSafari ? 'Safari' :
        isChrome ? 'Chrome' :
        isIE ? 'IE' :
        isEdge ? 'Edge' :
        isBlink ? 'Blink' :
        "Don't know";
};

console.log(browser());

, Страница не переходит наверх и не ломает { *} JavaScript эквивалентен printf / String.Format — переполнение стека

Bowser от lancedikson — 3761 ★ s — Последнее обновление 26 мая 2019 г. — 4,8 КБ

var result = bowser.getParser(window.navigator.userAgent);
console.log(result);
document.write("You are using "   result.parsedResult.browser.name  
               " v"   result.parsedResult.browser.version   
               " on "   result.parsedResult.os.name);
<script src="https://unpkg.com/bowser@2.4.0/es5.js"></script>

Platform.js


или для C # / Java-программистов, от bestiejs — 2250 ★ s — Последнее обновление: 30 октября 2018 г. — 5,9 КБ

console.log(platform);
document.write("You are using "   platform.name  
               " v"   platform.version   
               " on "   platform.os);
<script src="https://cdnjs.cloudflare.com/ajax/libs/platform/1.3.5/platform.min.js"></script>

jQuery Browser jQuery теперь определяет

console.log($.browser)
document.write("You are using "   $.browser.name  
               " v"   $.browser.versionNumber   
               " on "   $.browser.platform);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.1.0/jquery.browser.min.js"></script>

Detect.js (Archived) от darcyclarke — 522 ★ s — Последнее обновление: 26 октября 2015 г. — 2.9KB

var result = detect.parse(navigator.userAgent);
console.log(result);
document.write("You are using "   result.browser.family  
               " v"   result.browser.version   
               " on "   result.os.family);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Detect.js/2.2.2/detect.min.js"></script>
console.log(BrowserDetect)
document.write("You are using "   BrowserDetect.browser  
               " v"   BrowserDetect.version   
               " on "   BrowserDetect.OS);
<script src="https://kylemit.github.io/libraries/libraries/BrowserDetect.js"></script>

библиотека предоставляет версию

, действительно пишущий

. Вы получаете указатель курсора по умолчанию для этого элемента, когда выполняете

Обратите внимание, что для тех, кто использует новый редактировать : Я обновил приведенный выше ответ Роба, указав эту информацию.)

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

/* Results: */
console.log("isOpera", isOpera);
console.log("isFirefox", isFirefox);
console.log("isSafari", isSafari);
console.log("isIE", isIE);
console.log("isEdge", isEdge);
console.log("isChrome", isChrome);
console.log("isBlink", isBlink);

Красота этого подхода заключается в том, что он опирается на свойства механизма браузера, поэтому он охватывает даже производные браузеры, такие как Яндекс или Вивальди, которые практически совместимы с основными браузеры, чьи движки они используют. Исключением является Opera, которая полагается на прослушивание пользовательского агента, но сегодня (т.е. версия 15 и выше) даже Opera сама по себе является лишь оболочкой для Blink.

Спасибо всем. Я протестировал фрагменты кода здесь в последних браузерах: Chrome 55, Firefox 50, IE 11 и Edge 38, и я придумал следующую комбинацию, которая работала для меня для всех из них. Я уверен, что это можно улучшить, но это быстрое решение для тех, кому нужно:

var browser_name = '';
isIE = /*@cc_on!@*/false || !!document.documentMode;
isEdge = !isIE && !!window.StyleMedia;
if(navigator.userAgent.indexOf("Chrome") != -1 && !isEdge)
{
    browser_name = 'chrome';
}
else if(navigator.userAgent.indexOf("Safari") != -1 && !isEdge)
{
    browser_name = 'safari';
}
else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
{
    browser_name = 'firefox';
}
else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
{
    browser_name = 'ie';
}
else if(isEdge)
{
    browser_name = 'edge';
}
else 
{
   browser_name = 'other-browser';
}
$('html').addClass(browser_name);

для лучшего объяснения (прокрутите вниз до «От литералов JavaScript до JSON»)

Краткий вариант

var browser = (function(agent){
            switch(true){
                case agent.indexOf("edge") > -1: return "edge";
                case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
                case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
                case agent.indexOf("trident") > -1: return "ie";
                case agent.indexOf("firefox") > -1: return "firefox";
                case agent.indexOf("safari") > -1: return "safari";
                default: return "other";
            }
        })(window.navigator.userAgent.toLowerCase());
console.log(browser)

в любой функции объекта для ссылки на другие свойства этого объекта. Это не то же самое, что экземпляр, созданный с помощью try и catch для использования различных сообщений об ошибках браузера. ИЕ и край были перепутаны, но я использовал утку, набирающую текст из Роба В. (на основе этого проекта здесь: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328 ).

var getBrowser = function() {        
    try {
        var e;
        var f = e.width;
    } catch(e) {
        var err = e.toString();

        if(err.indexOf("not an object") !== -1) {
            return "safari";
        } else if(err.indexOf("Cannot read") !== -1) {
            return "chrome";
        } else if(err.indexOf("e is undefined") !== -1) {
            return "firefox";
        } else if(err.indexOf("Unable to get property 'width' of undefined or null reference") !== -1) {
            if(!(false || !!document.documentMode) && !!window.StyleMedia) {
                return "edge";
            } else {
                return "IE";
            }
        } else if(err.indexOf("cannot convert e into object") !== -1) {
            return "opera";
        } else {
            return undefined;
        }
    }
};

Существует также менее «хакерский» метод, который работает для всех популярных браузеров. В Google включен браузер. отметьте их закрывающий прототип . В частности, взгляните на goog.userAgent и goog.userAgent.product. Таким образом, вы также будете в курсе, если что-то изменится в способе представления браузерами (учитывая, что вы всегда запускаете последнюю версию компилятора закрытия).

Не используйте ссылки исключительно для запуска JavaScript.

var match = $window.navigator.userAgent.match(/(?:Chrom(?:e|ium)|Firefox)/([0-9] )./);
var ver = match ? parseInt(match[1], 10) : 0;

Не знаю, полезно ли это кому-либо, но вот вариант, который порадует TypeScript.

export function getBrowser() {

// Opera 8.0 
if ((!!window["opr"] && !!["opr"]["addons"]) || !!window["opera"] || navigator.userAgent.indexOf(' OPR/') >= 0) {
    return 'opera';
}

// Firefox 1.0 
if (typeof window["InstallTrigger"] !== 'undefined') {
    return 'firefox';
}

// Safari 3.0  "[object HTMLElementConstructor]" 
if (/constructor/i.test(window["HTMLElement"]) || (function(p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof window["safari"] !== 'undefined' && window["safari"].pushNotification))) {
    return 'safari';
}

// Internet Explorer 6-11
if (/*@cc_on!@*/false || !!document["documentMode"]) {
    return 'ie';
}

// Edge 20 
if (!(/*@cc_on!@*/false || !!document["documentMode"]) && !!window["StyleMedia"]) {
    return 'edge';
}

// Chrome 1 
if (!!window["chrome"] && !!window["chrome"].webstore) {
    return 'chrome';
}

// Blink engine detection
if (((!!window["chrome"] && !!window["chrome"].webstore) || ((!!window["opr"] && !!["opr"]["addons"]) || !!window["opera"] || navigator.userAgent.indexOf(' OPR/') >= 0)) && !!window["CSS"]) {
    return 'blink';
}

}

Обнаружение браузеров на рабочем столе и на мобильном устройстве: Edge, Opera, Chrome, Safari, Firefox, IE

(это просто, когда значение равно

function getBrowserName() {

    if ( navigator.userAgent.indexOf("Edge") > -1 && navigator.appVersion.indexOf('Edge') > -1 ) {
        return 'Edge';
    }
    else if( navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR') != -1 )
    {
        return 'Opera';
    }
    else if( navigator.userAgent.indexOf("Chrome") != -1 )
    {
        return 'Chrome';
    }
    else if( navigator.userAgent.indexOf("Safari") != -1)
    {
        return 'Safari';
    }
    else if( navigator.userAgent.indexOf("Firefox") != -1 ) 
    {
        return 'Firefox';
    }
    else if( ( navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true ) ) //IF IE > 10
    {
        return 'IE';
    }  
    else 
    {
        return 'unknown';
    }
}

Следующее больше не нужно для вашего

не приведу вас к началу страницы, как в случае с (#) является одной из облегченных библиотек JavaScript, позволяющих идентифицировать браузер, механизм, ОС, ЦП и тип / модель устройства из строки userAgent.

Доступен CDN. Здесь я включил пример кода для обнаружения браузера с помощью UAParser.

<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
<script type="text/javascript">
    var parser = new UAParser();
    var result = parser.getResult();
    console.log(result.browser);     // {name: "Chromium", version: "15.0.874.106"}
</script>
</head>
<body>
</body>
</html>

Lm result.browser для условного программирования вашей страницы.

Source Tutorial: Как определить браузер, движок, ОС, ЦП и устройство, используя JavaScript?

var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "Other";
            this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
        },
        searchString: function (data) {
            for (var i = 0; i < data.length; i  ) {
                var dataString = data[i].string;
                this.versionSearchString = data[i].subString;

                if (dataString.indexOf(data[i].subString) !== -1) {
                    return data[i].identity;
                }
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index === -1) {
                return;
            }

            var rv = dataString.indexOf("rv:");
            if (this.versionSearchString === "Trident" && rv !== -1) {
                return parseFloat(dataString.substring(rv   3));
            } else {
                return parseFloat(dataString.substring(index   this.versionSearchString.length   1));
            }
        },

        dataBrowser: [
            {string: navigator.userAgent, subString: "Edge", identity: "MS Edge"},
            {string: navigator.userAgent, subString: "MSIE", identity: "Explorer"},
            {string: navigator.userAgent, subString: "Trident", identity: "Explorer"},
            {string: navigator.userAgent, subString: "Firefox", identity: "Firefox"},
            {string: navigator.userAgent, subString: "Opera", identity: "Opera"},  
            {string: navigator.userAgent, subString: "OPR", identity: "Opera"},  

            {string: navigator.userAgent, subString: "Chrome", identity: "Chrome"}, 
            {string: navigator.userAgent, subString: "Safari", identity: "Safari"}       
        ]
    };

    BrowserDetect.init();


    var bv= BrowserDetect.browser;
    if( bv == "Chrome"){
        $("body").addClass("chrome");
    }
    else if(bv == "MS Edge"){
     $("body").addClass("edge");
    }
    else if(bv == "Explorer"){
     $("body").addClass("ie");
    }
    else if(bv == "Firefox"){
     $("body").addClass("Firefox");
    }


$(".relative").click(function(){
$(".oc").toggle('slide', { direction: 'left', mode: 'show' }, 500);
$(".oc1").css({
   'width' : '100%',
   'margin-left' : '0px',
   });
});
const isChrome = /Chrome/.test(navigator.userAgent)
const isFirefox = /Firefox/.test(navigator.userAgent)

Вы можете использовать мой плагин для этой цели. объединяет как оригинальный ответ Роба, так и обновление Пилау за 2016 год

    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;

Здесь вы узнаете, какой браузер работает.

function isValidBrowser(navigator){

            var isChrome =  navigator.indexOf('chrome'),
            isFireFox= navigator.indexOf('firefox'),
            isIE = navigator.indexOf('trident') ,
            isValidChromeVer = parseInt(navigator.substring(isChrome 7, isChrome 8)) >= 4,
            isValidFireForVer = parseInt(navigator.substring(isFireFox 8, isFireFox 9)) >= 3,
            isValidIEVer = parseInt(navigator.substring(isIE 8, isIE 9)) >= 7;

            if((isChrome > -1 && isValidChromeVer){ console.log("Chrome Browser")}

            if(isFireFox > -1 && isValidFireForVer){ console.log("FireFox  Browser")}

            if(isIE > -1 && isValidIEVer)){ console.log("IE Browser")}


        }

Мы можем использовать ниже используемые методы

utils.isIE = function () {
        var ver = navigator.userAgent;
        return ver.indexOf("MSIE") !== -1 || ver.indexOf("Trident") !== -1; // need to check for Trident for IE11
    };

    utils.isIE32 = function () {
        return (utils.isIE() && navigator.appVersion.indexOf('Win64') === -1);
    };

    utils.isChrome = function () {
        return (window.chrome);
    };

    utils.isFF64 = function () {
        var agent = navigator.userAgent;
        return (agent.indexOf('Win64') >= 0 && agent.indexOf('Firefox') >= 0);
    };

    utils.isFirefox = function () {
        return (navigator.userAgent.toLowerCase().indexOf('firefox') > -1);
    };

Простая единственная строка кода JavaScript даст вам имя браузера:

function GetBrowser()
{
    return  navigator ? navigator.userAgent.toLowerCase() : "other";
}