Comment Détecter Internet Explorer en Javascript?

Il y a certaines fonctionnalités de sites Web, qui peuvent ne pas être prises en charge par quelques navigateurs, et notamment par les anciens, tel que Internet Explorer. C'est pour cela, très souvent on doit vérifier le navigateur utilisé. Dans ce snippet, nous allons vous montrer les moyens différents pour vérifier si l'utilisateur utilise Internet Explorer.

Si vous voulez détecter Internet Explorer 10 ou plus ancien, vous devez utiliser le code suivant:

var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
   // IE 10 or older => return version number
        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
    }
Si vous voulez détecter Internet Explorer 11, voyez le code suivant:
var ua = window.navigator.userAgent;
var trident = ua.indexOf('Trident/');
if (trident > 0) {
        // IE 11 => return version number
        var rv = ua.indexOf('rv:');
        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
    }

Considérez le code ci-dessous, si vous voulez vérifier si l'utilisateur utilise Internet Explorer 12+ (Edge):

var ua = window.navigator.userAgent;
var edge = ua.indexOf('Edge/');
if (edge > 0) {
       // Edge (IE 12+) => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

Voici un exemple du code complèt:

Exemple

<!DOCTYPE html>
<html>
  <head>
    <title>
      Détecter Internet Explorer
    </title>
  </head>
  <body>
    <center>
      <h1 style="color:blue">Comment détecter IE</h1>
      <script>
        //détecte si l'utilisateur utilise Internet Explorer
        //renvoie version de IE ou false, si le navigateur n'est pas IE
        //Fonction pour détecter IE ou non
        function IEdetection() {
            var ua = window.navigator.userAgent;
            var msie = ua.indexOf('MSIE ');
            if (msie > 0) {
                // IE 10 ou plus ancien, renvoie le nombre de version
                return ('IE ' + parseInt(ua.substring(
                  msie + 5, ua.indexOf('.', msie)), 10));
            }
            var trident = ua.indexOf('Trident/');
            if (trident > 0) {
                // IE 11, renvoie le nombre de version
                var rv = ua.indexOf('rv:');
                return ('IE ' + parseInt(ua.substring(
                  rv + 3, ua.indexOf('.', rv)), 10));
            }
            var edge = ua.indexOf('Edge/');
            if (edge > 0) {
                //Edge (IE 12+), renvoie le nombre de version
                return ('IE ' + parseInt(ua.substring(
                  edge + 5, ua.indexOf('.', edge)), 10));
            }
            // L'utilisateur utilise un autre navigateur
            return ('Not IE');
        }
        var result = IEdetection();
        document.write(result);
      </script>
    </center>
  </body>
</html>

Avant l'arrivée de IE11, “MSIE” existait dans la propriété userAgent qui indique le pedigree de navigateur. En IE 7.0 cette propriété lit le suivant:

UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)

À partir de IE11, la valeur de renvoie de userAgen prend un départ radical de toutes les anciennes versions de IE.

Le schéma de détection suivant flaire n'importe quelle version de IE:

//userAgent in IE7 WinXP returns: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
//userAgent in IE11 Win7 returns: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
 
if (navigator.userAgent.indexOf('MSIE') != -1)
 var detectIEregexp = /MSIE (\d+\.\d+);/ //test for MSIE x.x
else // if no "MSIE" string in userAgent
 var detectIEregexp = /Trident.*rv[ :]*(\d+\.\d+)/ //test for rv:x.x or rv x.x where Trident string exists
 
if (detectIEregexp.test(navigator.userAgent)){ //if some form of IE
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=12)
  document.write("You're using IE12 or above")
 else if (ieversion>=11)
  document.write("You're using IE11 or above")
 else if (ieversion>=10)
  document.write("You're using IE10 or above")
 else if (ieversion>=9)
  document.write("You're using IE9 or above")
 else if (ieversion>=8)
  document.write("You're using IE8 or above")
 else if (ieversion>=7)
  document.write("You're using IE7.x")
 else if (ieversion>=6)
  document.write("You're using IE6.x")
 else if (ieversion>=5)
  document.write("You're using IE5.x")
}
else{
 document.write("n/a")
}

Voici l'exemple:

Exemple

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=8)
  document.write("You're using IE8 or above")
 else if (ieversion>=7)
  document.write("You're using IE7.x")
 else if (ieversion>=6)
  document.write("You're using IE6.x")
 else if (ieversion>=5)
  document.write("You're using IE5.x")
}
else
 document.write("n/a")