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