Comment puis-je cibler seulement Internet Explorer 11 avec JavaScript?

Quelle est la façon la moins sujette aux erreurs de cibler IE11 avec JavaScript?

Note: cela ne devrait être fait que pour analyser ou informer l'utilisateur du navigateur qu'il utilise. Pour tout le reste, il y a la détection de fonctionnalités.

51
demandé sur BoltClock 2013-07-03 15:59:39

7 réponses

la chaîne User-agent pour IE 11 est actuellement celle-ci :

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

Windows 10 exemple:

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 IE10 agent utilisateur a été

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
répondu Denys Séguret 2016-10-25 07:21:06

IE11 garde "Trident" dans sa chaîne UA, mais laisse tomber MSIE. Un moyen simple de détecter le navigateur est IE11 ou plus (IE12, IE13, etc) est:

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

Si vous voulez juste IE11 (et vous ne voulez pas que les futures versions de IE de match), faites ceci:

var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
26
répondu dave1010 2015-08-03 13:56:14
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
répondu Florian Margaine 2013-07-03 12:14:50

Essayez cette,

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 de détection par navigateur en JavaScript?

mis à jour pour IE=11

utiliser cette

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

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

2
répondu Rohan Kumar 2017-05-23 12:17:58

j'utilise le modèle suivant pour cibler tous les navigateurs IE. Vous pouvez le raccourcir si vous n'avez besoin que D'IE 11.

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

bonne chance!

Fredrik

2
répondu Fredrik Borggren 2015-12-02 00:02:41

ce paramètre définit ie à la version D'IE, ou 0 si aucun. Il fonctionnera pour 1 à 11, mais peut ne pas détecter les versions futures si Microsoft laisse tomber 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 plus détaillée ici .

1
répondu Beejor 2017-05-23 12:17:58

voici un script que vous pouvez utiliser pour détecter tout 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>
-1
répondu baisakhi chauhan 2018-08-23 08:24:02