Как сделать обнаружение браузера с jQuery 1.3 с устаревшим $ .browser.msie? - PullRequest
24 голосов
/ 18 января 2009

Как должно выполняться определение браузера теперь, когда jQuery 1.3 устарел (и я предполагаю, что он будет удален в будущей версии) $ .browser.msie и аналогичных?

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

$.browser.opera
$.browser.safari
$.browser.mozilla

... ну, я думаю, что это все из них:)

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

Редактировать: С новой функциональностью jQuery невозможно определить, используете ли вы IE6 или IE7. Как определить это сейчас?

Ответы [ 16 ]

1 голос
/ 23 февраля 2010

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

$(document).ready(function() {
    ie6catch = $.browser.msie + $.browser.version;
    if (ie6catch.indexOf("true6") == -1) {
        alert("This is not Internet Explorer 6");
    }
});
1 голос
/ 14 мая 2009

У меня есть кусок Javascript, который отлично работает в браузерах Mozilla и Webkit, а также в IE8. Однако в 6 и 7 он ломается. Это не имеет ничего общего ни с CSS, ни с плохим Javascript, но дрянная поддержка IE <8. </p>

Я вижу, откуда приходят люди для проверки «функций», а не перехвата браузера, однако функции, для которых доступен перехват, не имеют отношения к взломанному коду, так в чем же разница между перехватом браузера и перехватывать функции, пока ВСЕ объекты не будут доступны в объекте $ .support?

1 голос
/ 24 февраля 2009

Попробуйте скрипт GeckoFix на http://code.labor8.eu/geckoFix, он обнаружит Firefox ниже 3.0, чтобы вы могли настроить его так, как вам хочется (т.е. добавив в него больше правил, таких как обнаружение Firefox 2, Firefox 3, Opera и Safari) , Я думаю, что это может быть то, что вы ищете. Чтобы проверить пользовательский агент, просто введите в адресную строку javascript: alert (navigator.userAgent) и найдите некоторые конкретные символы, которые вам нужно будет ввести в сценарии.

1 голос
/ 18 января 2009

jQuery 1.3 заменил тестирование браузера .

Честно говоря, я удивлен, как часто веб-разработчики беспокоятся о том, в каком браузере работает их сайт. За 10 с лишним лет веб-разработки я могу вспомнить несколько случаев, когда я заботился, не говоря уже о том, чтобы заниматься чем-то другим , Наиболее распространенная причина заключается в том, что размеры именованных шрифтов значительно отличаются между Firefox и IE (font-size: large намного больше в IE, чем в FF), поэтому я использовал файл IEfix.css, чтобы исправить это.

Возможно, вам стоит взглянуть на Что лучше: хаки CSS или обнаружение браузера? для более подробного обсуждения темы.

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

Трудно сказать что-то еще, не зная, зачем вам это IE, потому что вы, вероятно, найдете гораздо лучшее решение для того, что вы делаете.

0 голосов
/ 07 мая 2013
var browser = {
        chrome: false,
        mozilla: false,
        opera: false,
        msie: false,
        safari: false
    };
    var sBrowser, sUsrAg = navigator.userAgent;
    if(sUsrAg.indexOf("Chrome") > -1) {
        browser.chrome = true;
    } else if (sUsrAg.indexOf("Safari") > -1) {
        browser.safari = true;
    } else if (sUsrAg.indexOf("Opera") > -1) {
        browser.opera = true;
    } else if (sUsrAg.indexOf("Firefox") > -1) {
        browser.mozilla = true;
    } else if (sUsrAg.indexOf("MSIE") > -1) {
        browser.msie = true;
    }
console.log(browser.msie);
0 голосов
/ 30 марта 2010

Что было бы неплохо, так это добавить браузеры как класс в тег body для css. Не уверен, что это работает, потому что я не запускаю Windows и у меня есть PowerPC, но он должен поставить класс .ie6 для всех интернет-исследователей 6-9, что не очень полезно. Используйте mooModernizr для всего остального.

if (Browser.Engine.trident) {

    var IEbrowser = $('body');

    IEbrowser.addClass('ie');

}​
...