Какая замена для $ .browser - PullRequest
       12

Какая замена для $ .browser

48 голосов
/ 10 марта 2012

Документ jQuery помечает $.browser как устаревшее. Так какая же замена?

Ответы [ 6 ]

32 голосов
/ 25 февраля 2013

На основе jQuery-плагина миграции , я нашел это.

jQuery.uaMatch = function( ua ) {
    ua = ua.toLowerCase();
    var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
        /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
        /(msie) ([\w.]+)/.exec( ua ) ||
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || [];
    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};
if ( !jQuery.browser ) {
    var 
    matched = jQuery.uaMatch( navigator.userAgent ),
    browser = {};
    if ( matched.browser ) {
        browser[ matched.browser ] = true;
        browser.version = matched.version;
    }
    // Chrome is Webkit, but Webkit is also Safari.
    if ( browser.chrome ) {
        browser.webkit = true;
    } else if ( browser.webkit ) {
        browser.safari = true;
    }
    jQuery.browser = browser;
}
23 голосов
/ 10 марта 2012

Если вам действительно нужен старый добрый $ .browser

Согласно документам , эта функция устарела в 1,3 и полностью удалена в 1,9, хотя он все еще доступен в официальном плагине jQuery Migrate .

Если вы хотите сделать это правильно

В зависимости от обнаружение браузера 1017 * не очень хорошая идея .Обнаружение возможностей - путь к успеху ( Modernizr - отличный инструмент для этого).В jQuery был метод $.support() для обеспечения обнаружения некоторых функций, но теперь он также устарел. Они также предлагают использовать Modernizer.

Если вам действительно нужно обнаружение браузера

Исправление причуд браузера не является допустимым вариантом использования для обнаружения браузера, но есть и другие случаи использования.Используйте любой инструмент обнаружения браузера Javascript (например, bowser ), так как эта функция вообще не зависит от jQuery.

3 голосов
/ 10 марта 2012

Прямой замены нет.Вы должны использовать обнаружение функций, а не обнаружение браузера (у вас есть веские основания знать браузер?), Поэтому вы можете использовать свойство $.support .(В API doco сказано столько же для $.browser.)

2 голосов
/ 10 марта 2012
1 голос
/ 13 декабря 2013

jquery-browser-plugin - хорошая замена

1 голос
/ 10 марта 2012

вы можете использовать переменную навигатора из JavaScript

console.log(navigator)

но если вы хотите проверить совместимость с функцией jquery, вы можете использовать поддержку var, например

$.support.ajax
...