217 votes

Comment détecter IE11?

Quand je veux détecter IE, j'utilise ce code:

 function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    msg = "You are using IE " + ver;
  }
  alert( msg );
}
 

Mais IE11 retourne "Vous n'utilisez pas Internet Explorer". Comment puis-je le détecter?

225voto

Joachim Isaksson Points 85969

IE11 ne signale plus que MSIE, selon cette liste de changements, c'est intentionnel pour éviter les erreurs de détection.

Ce que vous pouvez faire si vous avez vraiment envie de savoir c'est IE est de détecter l' Trident/ chaîne de l'agent utilisateur s' navigator.appName retours Netscape, quelque chose comme (non testé);

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

Notez que IE11 (autant que je sache) est toujours dans l'aperçu, et l'agent utilisateur peut changer avant la sortie.

89voto

mcw0933 Points 865

Utilisez !(window.ActiveXObject) && "ActiveXObject" in window pour détecter explicitement IE11.

Pour détecter toute version d'IE, utilisez plutôt "ActiveXObject" in window .

47voto

Paul Sweatte Points 8668

Utilisez MSInputMethodContext dans le cadre d'une vérification de la détection des fonctionnalités. Par exemple:

 //Appends true for IE11, false otherwise
window.location.hash = !!window.MSInputMethodContext;
 

Les références

15voto

Fabio Points 89

J'ai lu vos réponses et fait un mélange. Il semble fonctionner avec Windows XP (IE7 / IE8) et Windows 7 (IE9 / IE10 / IE11).

 function ie_ver(){  
    var iev=0;
    var ieold = (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
    var trident = !!navigator.userAgent.match(/Trident\/7.0/);
    var rv=navigator.userAgent.indexOf("rv:11.0");

    if (ieold) iev=new Number(RegExp.$1);
    if (navigator.appVersion.indexOf("MSIE 10") != -1) iev=10;
    if (trident&&rv!=-1) iev=11;

    return iev;         
}
 

Bien sûr, si je retourne 0, cela signifie pas d'IE.

2voto

areschen Points 124
var ua = navigator.userAgent.toString().toLowerCase();
var match = /(trident)(?:.*rv:([\w.]+))?/.exec(ua) ||/(msie) ([\w.]+)/.exec(ua)||['',null,-1];
var rv = match[2];
return rv;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X