web-dev-qa-db-fra.com

Comment cibler uniquement Internet Explorer 11 avec JavaScript?

Quel est le moyen le moins sujet aux erreurs de cibler uniquement IE11 avec JavaScript?

Remarque: cela ne devrait être fait que pour des analyses ou pour informer l'utilisateur du navigateur utilisé. Pour tout le reste, il y a détection de fonctionnalités.

53
dave1010

La chaîne d'agent d'utilisateur pour IE 11 est actuellement celle-ci:

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

Exemple de Windows 10:

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

Ce qui signifie que vous pouvez simplement tester, pour les versions 11.xx, 

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

Comme L'agent utilisateur IE10 était

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

il est probablement aussi sûr de parier sur le fait que maintenant, Trident/X est censé être le vrai versionning.

84
Denys Séguret

IE11 conserve "Trident" dans sa chaîne UA, mais abandonne MSIE. Un moyen simple de détecter le navigateur est IE11 ou une version ultérieure (IE12, IE13, etc.):

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

Si vous voulez juste IE11 (et que vous ne voulez pas que les versions futures de IE correspondent], procédez comme suit:

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

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

4
Florian Margaine

Essaye ça,

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;
})();

Source from Détection de navigateur en JavaScript?

Mis à jour pour IE = 11

Utilisez ceci 

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

Lisez ceci http://msdn.Microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx

2
Rohan Kumar

J'utilise le modèle suivant pour cibler tous les navigateurs IE. Vous pouvez le résumer si vous avez seulement besoin de IE 11.

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

Bonne chance!

Fredrik

2
Fredrik Borggren

Cela définira ie à la version de IE, ou 0 si aucun. Cela fonctionnera de 1 à 11, mais ne détectera pas les versions futures si Microsoft abandonne le moteur Trident.

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

Vous pouvez également être intéressé par ma réponse connexe plus détaillée ici .

1
Beejor

Voici un script que vous pouvez utiliser pour détecter n'importe quel navigateur:

<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>
0
baisakhi chauhan