問題につまずいた。 Jqueryを使用してIE 11(現在放送中のベータ版))を検出しようとすると、結果は「firefox」になります。同じコードはIE 10。異なる指示を表示するには、ユーザーが使用しているブラウザを知る必要があります。
問題があれば、Oracle VirtualBoxでテストしています。 OSはWin 7です。
コードは次のとおりです。
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
var browser = function() {
if ($.browser.msie) return "ie";
var ua = navigator.userAgent.toLowerCase();
if ($.browser.mozilla/* && /firefox/.test(ua)*/) return "firefox";
if (/chrome/.test(ua)) return "chrome";
return /*"#"*/'unknown';
} ();
alert (browser); // This return firefox
alert ($.browser.version); // This returns 11.0 - the CORRECT version of IE
</script>
ご覧のとおり、Jqueryはブラウザーのバージョンを検索できますが、ブラウザー名は検索できません。それをバイパスする方法はありますか?
最終的な解決策:
if (!!navigator.userAgent.match(/Trident\/7\./))
return "ie";
リリースバージョンが同じように動作することを期待することしかできません。
互換性のためです。クライアントコードは、多くの場合、機能の検出ではなくブラウザーの検出を実行します(これは悪い習慣です)。したがって、クライアントがIE 11の機能をすべて適切に使用するように努力して、MicrosoftはIE 11がMozilla互換であると報告するようにしました。
したがって、ブラウザの検出を行う代わりに、機能の検出を行います。 ブラウザ検出と機能検出 を参照してください。 Modernizr が最もよく知られている(およびMicrosoftはVisual StudioのASP.NETテンプレートの一部として出荷しています)、そのための優れたライブラリがいくつかあります。
MSDNブログIE 11ユーザーエージェント文字列 を参照してください。
JQuery Migrateの目的は、古い不適切なコードの実行を許可することであり、新しい不適切なコードの作成を奨励することではありません。 IE11がリリースされるずっと前に、そのひどく記述された古いコードが作成されたので、とにかくIE11を知らず、おそらく誤動作するでしょう。 IE11を検出するためのjQuery Migrateプラグインは変更されません。新しいコードを作成している場合は、ブラウザ検出を使用しないでください。代わりに、機能検出を使用してください。
jQuery.browser
は長い間非推奨であり、削除されました。$.support
またはModernizr
などのより優れたツール