Détecter la version de IE (avant v9) en JavaScript

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

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 présent 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 useragent chaîne. 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 pre-v9 IE les 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 de IE 10, ce qui rend cette approche tout à fait inutile.

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

  • "C'est juste pas la peine de notre temps et de l'argent pour soutenir IE pré-v9". Je souhaite que je pourrais le faire.
  • Fondé sur le point [2] je ne vais pas suggérer Modernizr (en.wikipedia.org/wiki/Modernizr) - tout le monde a tracer une ligne dans le sable quelque part - mais IE9 semble comme une ligne haute
  • Nous avons un petit auditoire captif. Pratiquement tous les utilisateurs utilisent décent navigateurs à l'exception de quelques WinXP gars qui ne sont pas admissibles à la mise à niveau vers IE9. Ce sont les mecs qui je suis ciblage avec ce message d'erreur.
  • Une idée intéressante. Donc, à l'aide de "commentaires conditionnels" dans IE 10 ne cause pas de IE10 pour étouffer? Il va juste être ignoré? Si oui, alors ce que vous dites fait beaucoup de sens.
  • Les commentaires conditionnels sont juste des commentaires. Seul IE interprète comme des particuliers. IE10+ ne le fais plus.
  • Les commentaires conditionnels seront traités exactement de la même façon par IE 10 en tant que non-IE navigateurs. Ils sont valides HTML commentaires seront traités comme tels. Je suis d'accord avec Andreas et pense que les commentaires conditionnels est le chemin à parcourir.
  • La documentation officielle qui dit que IE10+ ne sont pas compatibles avec les commentaires conditionnels: blogs.msdn.com/b/ie/archive/2011/07/06/... - Grâce à: stackoverflow.com/a/9900331/320399
  • La réponse sélectionnée est incorrecte et ne marche pas pour ie11. voir ma réponse
  • Qui se soucie si IE10 prend en charge les commentaires conditionnels si ce n'est pas l'un des navigateurs que vous essayez de détecter? Vous n'avez pas besoin de détecter si c'est IE 9 ou supérieur, vous avez seulement besoin de détecter si c'est IE8 ou moins. Votre erreur est de penser que vous avez besoin de comprendre ce que c'est dans le but de comprendre ce que ça ne l'est pas. Ce n'est pas vrai. Vous n'avez pas besoin de détecter IE10, vous avez seulement besoin de savoir que ce n'est PAS IE8 (ou inférieur). Tout code que vous mettez dans un lt IE 9 conditionnelle sera exécuté dans IE8 et ci-dessous et nulle part ailleurs. Aussi simple que cela. C'est la seule chose que Microsoft n'a droit avec IE.
  • Seulement deux mois de plus avant que nous puissions danser sur IE8 est grave... j'espère que c'est juste quelques années avant que nous puissions tous fossé IE prise en charge...

InformationsquelleAutor Chad Decker | 2012-06-09