253 votes

Détecter la version IE en Javascript

Je veux rebondir les utilisateurs de notre site web à une page d'erreur si ils utilisent une version d'Internet Explorer antérieures à la version v9. C'est juste pas la peine de notre temps et de l'argent pour soutenir IE pré-v9. Les utilisateurs de tous les autres non-IE navigateurs sont très bien et ne devrait pas être sans provision. Voici le code:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}

Sera-ce code faire l'affaire?

À la tête de quelques commentaires qui seront probablement à venir à ma façon:

[1] Oui, je sais que les utilisateurs puissent se forger leur chaîne useragent. Je ne suis pas concerné.

[2] Oui, je sais que la programmation des pros préfèrent flairer la fonction de soutien au lieu de navigateur-type, mais je ne ressens pas cette approche a du sens dans ce cas. Je sais déjà que tous (les) non-IE des navigateurs prennent en charge les fonctionnalités dont j'ai besoin et que tous les pré-v9 IE navigateurs ne le font pas. Vérification de la fonctionnalité par fonctionnalité sur tout le site serait un gaspillage.

[3] Oui, je sais que quelqu'un essaie d'accéder au site en utilisant IE v1 (ou >= 20) ne serait pas obtenir 'badBrowser' la valeur true et que la page d'avertissement de ne pas être affichées correctement. C'est un risque que nous sommes prêts à prendre.

[4] Oui, je sais que Microsoft a "commentaires conditionnels" qui peut être utilisé pour préciser la version du navigateur de détection. IE ne supporte plus les commentaires conditionnels comme d'IE 10, ce qui rend cette approche tout à fait inutile.

Tout autre problème évident d'être au courant? Merci.

356voto

Jezen Thomas Points 6311

C'est ma façon préférée de le faire. Cela donne un contrôle maximum:

Commencez par configurer correctement vos classes ie

 <!doctype html>
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
<head>
 

Et ajoutez un script simple:

 (function ($) {
    "use strict";

    // Detecting IE
    var oldIE;
    if ($('html').is('.ie6, .ie7, .ie8')) {
        oldIE = true;
    }

    if (oldIE) {
        // Here's your JS for IE..
    } else {
        // ..And here's the full-fat code for everyone else
    }

}(jQuery));
 

Merci à Paul Irish .

162voto

weroro Points 639

Retourne la version IE ou sinon IE renvoie false

 function isIE () {
  var myNav = navigator.userAgent.toLowerCase();
  return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}
 

Exemple:

 if (isIE () == 8) {
 // IE8 code
} else {
 // Other versions IE or not IE
}
 

ou

 if (isIE () < 9) {
 // is IE version less than 9
} else {
 // is IE 9 and later or not IE
}
 

ou

 if (isIE()) {
 // is IE
} else {
 // Other browser
}
 

119voto

Tim Down Points 124501

Utiliser des commentaires conditionnels. Vous essayez de détecter les utilisateurs de IE 9 = 10 et non-IE), les commentaires seront traitées comme les commentaires HTML normales, qui est ce qu’ils sont.

Exemple HTML :

Vous pouvez aussi le faire purement avec script, si vous avez besoin :

118voto

Andreas Points 6610

Si personne d'autre n'a ajouté un addEventLister -method et que vous utilisez le bon mode de navigation, vous pouvez vérifier IE 8 ou moins avec

 if (window.attachEvent && !window.addEventListener) {
    // "bad" IE
}
 

Legacy Internet Explorer et attachEvent (MDN)

60voto

EpokK Points 11131

Pour détecter la MSIE (v6 - v7 - v8 - v9 - v10 - v11) facilement :

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