JavaScript で IE11 のみをターゲットにする最もエラーが発生しにくい方法は何ですか?
注: これは実際には、分析のため、またはユーザーが使用しているブラウザーを通知するためにのみ行う必要があります。他のすべてについては、機能検出があります。
JavaScript で IE11 のみをターゲットにする最もエラーが発生しにくい方法は何ですか?
注: これは実際には、分析のため、またはユーザーが使用しているブラウザーを通知するためにのみ行う必要があります。他のすべてについては、機能検出があります。
現在、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);
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Trident/X
おそらく、今が本当のバージョニングであるという事実に賭けても安全です。
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/));
これはie
IE のバージョンに設定されます。ない場合は 0 に設定されます。1 から 11 までは機能しますが、Microsoft が Trident エンジンを削除した場合、将来のバージョンを検出できない可能性があります。
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
関連するより詳細な回答hereにも興味があるかもしれません。