59

JavaScript で IE11 のみをターゲットにする最もエラーが発生しにくい方法は何ですか?

注: これは実際には、分析のため、またはユーザーが使用しているブラウザーを通知するためにのみ行う必要があります。他のすべてについては、機能検出があります。

4

7 に答える 7

90

現在、IE 11 のユーザー エージェント文字列は次のとおりです。

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

Windows 10 の例:

Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko

つまり、バージョン 11.xx の場合、簡単にテストできます。

var isIE11 = /Trident.*rv[ :]*11\./.test(navigator.userAgent);

IE10のユーザーエージェントとして

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

Trident/Xおそらく、今が本当のバージョニングであるという事実に賭けても安全です。

于 2013-07-03T12:16:02.307 に答える
28

IE11 は UA 文字列に「Trident」を保持しますが、MSIE をドロップします。ブラウザーが IE11 以上 (IE12、IE13 など) であることを検出する簡単な方法は次のとおりです。

var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));

IE11だけが必要な場合(および IE の将来のバージョンを一致させたくない場合) は、次のようにします。

var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
于 2013-07-03T11:59:39.247 に答える
3

これはieIE のバージョンに設定されます。ない場合は 0 に設定されます。1 から 11 までは機能しますが、Microsoft が Trident エンジンを削除した場合、将来のバージョンを検出できない可能性があります。

var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}

関連するより詳細な回答hereにも興味があるかもしれません。

于 2015-06-18T06:07:50.520 に答える