web-dev-qa-db-ja.com

JavaScriptでInternet Explorer 11のみをターゲットにするにはどうすればよいですか?

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

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

55
dave1010

現在、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が実際のバージョン管理になっているという事実に賭けても安全でしょう。

85
Denys Séguret

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

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

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

var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
26
dave1010
var isIE11 = !!navigator.userAgent.match(/Trident\/7.0; rv 11/);

ソース: http://www.nczonline.net/blog/2013/07/02/internet-Explorer-11-dont-call-me-ie/

4

次のパターンを使用して、すべてのIEブラウザーをターゲットにしています。 IE 11.のみが必要な場合は、短縮できます。

 /msie|trident|Edge/g.test(navigator.userAgent.toLowerCase());

幸運を!

フレドリク

3

これにより、ieがIEのバージョンに設定され、ない場合は0に設定されます。 1から11までは動作しますが、MicrosoftがTridentエンジンを削除すると、将来のバージョンが検出されなくなる可能性があります。

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

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

2
Beejor

これを試して、

navigator.sayswho= (function(){
   var N= navigator.appName, ua= navigator.userAgent, tem;
   var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
   if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
   M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
   return M;
})();

JavaScriptでのブラウザー検出? からのソース

IE = 11に更新

これを使って

var isIE11 = navigator.userAgent.match(/Trident\/7.0; rv 11.0/);

これを読む http://msdn.Microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx

2
Rohan Kumar

ブラウザを検出するために使用できるスクリプトは次のとおりです。

<script>

  // Opera
  var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

  // Firefox 1.0+
  var isFirefox = typeof InstallTrigger !== 'undefined';

  // Safari 3.0+ "[object HTMLElementConstructor]" 
  var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);

  // Internet Explorer 6-11
  var isIE = /*@cc_on!@*/false || !!document.documentMode;

  // Edge 20+
  var isEdge = !isIE && !!window.StyleMedia;

  // Chrome 1+
  var isChrome = !!window.chrome && !!window.chrome.webstore;

  // Blink engine detection
  var isBlink = (isChrome || isOpera) && !!window.CSS;

  if (isFirefox==true) {
    alert(isFirefox)
    $('.container-fluid').css({"overflow-y":"auto","height":"150%"});  
  }

</script>
1