勇敢な開発者への注意事項
jQuery.browser
とに関する(いくつかの)義務的な言葉jQuery.support
:
jQuery.browser
navigator.userAgentから読み取ったユーザーエージェントのフラグが含まれています。このプロパティは使用しないことをお勧めします。代わりに機能検出を使用してみてください (「 」を参照jQuery.support
)。jQuery.browser
jQuery の将来のリリースでプラグインに移動される可能性があります。
を使用$.browser
して現在のユーザー エージェントを検出し、実行中のブラウザーに基づいてページの表示を変更するのではなく、機能検出を使用することをお勧めします。このプロセスを簡単にするために、jQuery はそのような多くのテストを実行し、jQuery.support
オブジェクトのプロパティを設定します。
教訓: プロジェクトを更新し、 への依存を取り除きjQuery.browser
、必要に応じて機能検出を使用します。非推奨または削除されたメソッドまたはプロパティにプロジェクトが過度に依存している領域をテストして見つけるには、 を参照してくださいjQuery-migrate
。
jQUEry 機能検出の代替手段については、 Modernizr.jsとYepNope.jsも参照してください。
を置き換える jQuery shim ファイル$.browser
(fancyBox-rails プロジェクトの厚意による):
// jQuery 1.9 has removed the `$.browser` property, fancybox relies on
// it, so we patch it here if it's missing.
// This has been copied from jQuery migrate 1.1.1.
if ( !jQuery.browser ) {
var 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"
};
};
matched = 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;
}
https://github.com/hecticjeff/fancybox-rails/blob/master/vendor/assets/javascripts/jquery.browser.js