web-dev-qa-db-ja.com

$ .browserの代替品は何ですか

JQueryドキュメントタグ$.browser非推奨。それで、それの代わりは何ですか?

48
Rocky

古き良き$ .browserが本当に必要な場合

docs によると、この機能は1.3で廃止され、で完全に削除されました1.9、それはまだ 公式のjQuery Migrateプラグイン で利用可能です。

あなたがそれを正しくしたい場合

ブラウザの検出良いアイデアではありません に依存します。機能の検出がその方法です( Modernizr はそのための優れたツールです)。 jQueryには、何らかの機能検出を提供する$.support()メソッドがありましたが、現在では非推奨です。 また、Modernizerの使用を推奨します。

ブラウザの検出が本当に必要な場合

ブラウザーの癖を修正することはブラウザー検出の有効なユースケースではありませんが、他のユースケースもあります。この機能はjQueryにまったく依存しないため、Javascriptブラウザー検出ツール( bowser など)を使用します。

23
kapa

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;
}
32
takien

直接の代替品はありません。ブラウザの検出ではなく機能の検出を使用する必要があります(ブラウザを知る必要がある十分な理由がありますか?)ので、 $.supportプロパティ 。 (APIドコで$.browser。)

3
nnnnnn
2
Emil Vikström

javascriptからナビゲータ変数を使用できます

console.log(navigator)

しかし、jqueryの関数との互換性を確認したい場合は、次のようなサポート変数を使用できます

$.support.ajax
1
Spidfire

jquery-browser-plugin は、置き換えの良いドロップです

1
Claus