2

重複の可能性:
$.browser が非推奨になったのはなぜですか? また、より良い代替手段は何ですか?

私はこれまで、jQuery で $.browser プロパティを使用してブラウザーを判別してきました。私はそれが非常に役に立ち、有用であることがわかりました。

また、歴史的に最新バージョンの jQuery にもリンクしています。このような:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

どうやら jQuery 1.9 はリリースされておらず、このプロパティのサポートは削除されています。

代替として使用できる優れた jQuery プラグインを知っている人はいますか?

推奨される方法は $.support を使用することであることは知っています。

しかし、誰かが使用しているブラウザーを知る方が簡単な場合もあります。

誰でも助けることができますか?

4

2 に答える 2

1

browser オブジェクトは単に を解析しnavigator.userAgentました。気が向いたら、いつでも自分で解析できます。

古いバージョンの JQuery からコードを抜き出し、それを独自の jquery プラグインに組み込むことを妨げるものは何もありません。

Jqueryのドキュメントでは、ブラウザ オブジェクトを推奨しておらず、スプーフィングに対して脆弱であるとさえ述べています。

$.browser は navigator.userAgent を使用してプラットフォームを判別するため、ユーザーによるなりすましやブラウザー自体による偽装に対して脆弱です。可能な限り、ブラウザー固有のコードを完全に避けることが常に最善です。$.support プロパティは、$.browser に依存するのではなく、特定の機能のサポートを検出するために使用できます。

于 2013-01-16T21:47:23.620 に答える
0

あなたはいつでもソースに行くことができます。

これは私のコードではありません、これはjQueryソースコードから適応されています

デモ:http://jsfiddle.net/KKwqU/

js:

function ExtendJqueryBrowser(){

 jQuery.extend({browser:{}});

 function uaMatch(ua){
     ua = ua.toLowerCase();
     var rwebkit = /(webkit)[ \/]([\w.]+)/,
     ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
     rmsie = /(msie) ([\w.]+)/, 
     rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
     var match = rwebkit.exec( ua ) || ropera.exec( ua ) || rmsie.exec( ua ) || ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || [];
     return { browser: match[1] || "", version: match[2] || "0" };
 }

    var browserMatch = uaMatch( navigator.userAgent );
    if ( browserMatch.browser ) {
     jQuery.browser[ browserMatch.browser ] = true;
     jQuery.browser.version = browserMatch.version;
    }

    // Deprecated, use jQuery.browser.webkit instead
    if ( jQuery.browser.webkit ) {
     jQuery.browser.safari = true;
    }
}
于 2013-01-16T21:57:43.533 に答える