В Javascript, как определить, является ли мой текущий браузер Firefox на компьютере, а не на все остальное?

if(firefox and is on a computer){
alert('using firefox on a computer')
}else{
alert("using something else!");
}

Как я могу это сделать?

Ответ 1

То, что вы ищете, называется обнаружением браузера:

if ($.browser.mozilla) { ... 

Тем не менее, перехватывать браузер не рекомендуется, так как его легко подделать пользовательским агентом, то есть притворяться другим браузером!

Лучше всего использовать обнаружение функций по-своему или через интерфейс jQuery.support: http://api.jquery.com/jQuery.support/

Вот статья о расширении его для вашего собственного использования: http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/

Редактировать:

Нашел также этот пост, который помогает: Когда IE8 не IE8, что такое $.browser.version?

Ответ 2

Я делаю что-то вроде ниже;

function checkBrowser(){
    c = navigator.userAgent.search("Chrome");
    f = navigator.userAgent.search("Firefox");
    m8 = navigator.userAgent.search("MSIE 8.0");
    m9 = navigator.userAgent.search("MSIE 9.0");
    if (c > -1) {
        browser = "Chrome";
    } else if (f > -1) {
        browser = "Firefox";
    } else if (m9 > -1) {
        browser ="MSIE 9.0";
    } else if (m8 > -1) {
        browser ="MSIE 8.0";
    }
    return browser;
}

Ответ 3

Как это: Проверьте Firefox. Или какой-нибудь другой браузер.

 window.onload = function() {
          //  alert(navigator.userAgent);
            if (navigator.userAgent.indexOf("Firefox") > 0) {
                alert("ff");
            }
        }

Ответ 4

if (navigator.userAgent.indexOf("Firefox") != -1) {

 //some specific code for Mozilla

 }

Ответ 5

navigator.sayswho= (function(){
  var N= navigator.appName, ua= navigator.userAgent, tem;
  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.join(' ');
 })();

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

Я использую его для регистрации ошибок от пользователей и тестирования кода в нескольких браузерах, где я знаю строки userAgent.

Ответ 6

Лучше всего обнаружить нужные функции, а не браузер. Например, если вам нужно знать, поддерживается ли foo(), вы можете проверить его с помощью if (foo) {}

Ответ 8

Вы можете сделать элемент управления с javascript navigator.userAgent или navigator объектом вообще,

Но если вы хотите использовать что-то готовое к работе, проверьте это:

http://www.quirksmode.org/js/detect.html

надеюсь, что это поможет, Синан.

Ответ 9

Как уже спрашивали в комментарии: зачем тебе это? Обнюхивание браузера - плохая привычка, и есть только несколько ситуаций, когда это необходимо.

Вместо этого используйте функцию обнаружения. По словам Николаса Закаса, вы должны тестировать относительно "необычные" функции, прежде чем использовать их, и полагаться только на эти тесты, так что вы отчасти отказоустойчивы. Например, сделать

if (window.XMLHttpRequest)
    var xhr = new XMLHttpRequest();

вместо

if ((brwsr.IE && brwsr.IE.version >= 7) || (brwsr.firefox) || (brwsr.opera))
    var xhr = new XMLHttpRequest();

И тоже не делай

if (window.XMLHttpRequest)
    // Hey, native XMLHttpRequest-support, so position: fixed is also supported

(вместо этого проверьте, поддерживается ли position: fixed)

Существует несколько необычных браузеров с такими именами, как Kazehakase и Midori, которые также могут или не могут поддерживать эти функции, поэтому ваши сценарии будут работать над ними при использовании функции обнаружения.

Но, пожалуйста, прочитайте упомянутую статью, так как она содержит очень хорошее и подробное объяснение этой техники. (Кстати, я думаю, что Профессиональный JavaScript для веб-разработчиков Zakas все еще слишком неизвестен.)

Ответ 10

Любые решения, упомянутые здесь, небезопасны, поскольку агент не всегда в первую очередь предоставляет правильное имя браузера. Если вы вызываете страницу с Chrome, у вас также есть сафари в агенте. Это означает, что если safari - это первое, что происходит с запросом if, тогда у вас есть safari, если у вас нет elseif, и только если тогда переопределение переопределяется в этом случае safari. Это решение не самое безопасное, но для получения первого всегда требуется самый маленький индекс. Опера наоборот, опера находится в самом конце агента, поэтому другие браузеры могут отличаться.

/**
 * Description of Browser
 *
 * @author      Samet Tarim
 * @link        http://www.tnado.com/
 */    
var _MBT_Browser = {
    client: {},
    __init: function () {

        console.log('Init Browser...');

        _MBT_Browser.client.agent = navigator.userAgent;
        _MBT_Browser.set();
    },
    set: function () {

        var browsers = ["Firefox", "MSIE", "Trident", "Safari", "Chrome", "OPR"]; // Set the browser we want to detect
        _MBT_Browser.get(browsers);
        if (_MBT_Browser.client.current) {
            document.documentElement.setAttribute('data-useragent', _MBT_Browser.client.current); // Ad HTML tag data-useragent="IE"
        }
    },
    get: function (browser) {

        var index = '',
            i = 0,
            max = 0,
            min = 1000000; // to get the min value, we set first to million, is a placeholder for the first loop

        for (; i < browser.length; i++) {

            index = _MBT_Browser.client.agent.indexOf(browser[i]); // get index

            // Special case, we need here the largest index
            if (browser[i] === "OPR") {
                if (index > -1 && index > max) {
                    min = index;
                    _MBT_Browser.client.current = browser[i].toLowerCase();
                }
            } else {
            // We hold only the smallest index number and overwrite on smaller
                if (index > -1 && index < min) {
                    min = index;
                    _MBT_Browser.client.current = browser[i].toLowerCase();
                }
            }
        }
    }
};

Использование:

document.addEventListener('DOMContentLoaded', function () {
    _MBT_Browser.__init();
});

И использовать с CSS для стилизации в браузере:

[data-useragent="firefox"] {
    /* Attribute has this exact value */
}

Ответ 11

Для быстрого и грязного решения просто сделайте следующее: удобнее использовать include() при поиске по ключевому слову Firefox в свойстве NavigatorID.userAgent, чем indexOf().

const isFirefoxBrowser = navigator.userAgent.includes('Firefox');

ВНИМАНИЕ:

Идентификация браузера на основе обнаружения строки агента пользователя ненадежен и не рекомендуется, так как строка агента пользователя является пользователем конфигурируемый.

Узнайте больше о userAgent на MDN >>

РЕКОМЕНДУЕМОЕ РЕШЕНИЕ:

Используйте обнаружение функций вместо обнаружения в браузере.

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

Подробнее о реализации функции обнаружения в MDN >>

Ответ 13

Вы можете использовать navigator.userAgent для этого. Просто посмотрите, содержит ли он Mozilla

Ответ 14

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