jeudi 13 décembre 2012

Javascript - détecter version navigateur IE

Bonjour,

Si comme moi, vous avez du code JavaScript HTML5 qui ne s’exécute pas sur tous les navigateurs, surtout sur les anciennes versions d'IE, vous pouvez utiliser ce bout de code qui utilise les commentaires conditionnels d'IE :

//Traitement spécifique pour IE8 qui n'accepte pas les selecteurs CSS3
var div = document.createElement('div');
div.innerHTML = '<!--[if lte IE 8]>IE8<![endif]-->';
if(div.innerHTML=="IE8")
{
       <!-- Code qui s'exécutera sous IE8 ou antérieur--> 
  }
  else
  {
        <!-- Code qui s'éxécutera sous les autres navigateurs -->
  }

Si notre navigateur est est IE mais une version antérieure ou égale à la 8, le div contiendra seulement la chaîne "IE8", alors que si votre navigateur est toujours IE, mais une autre version, le div sera vide.
Et si finalement votre navigateur n'est pas IE, le commentaire ne sera pas interprété et le div contiendra simplement : ""

Ci-dessous la liste des différents commentaires conditionnels utilisables :
<!--[if gte IE 6]> pour IE 6.0 et version plus récentes <![endif]-->

<!--[if IE 5.0]> pour IE 5.0 <![endif]-->

<!--[if IE 5.5000]> pour IE 5.5 <![endif]-->

<!--[if IE 6]> pour IE 6.0 <![endif]-->

<!--[if IE 7]> pour IE 7.0 <![endif]-->

<!--[if IE 8]> pour IE 8.0 <![endif]-->

<!--[if IE 9]> pour IE 9.0 <![endif]-->

<!--[if gte IE 7]> pour IE 7 et supérieur <![endif]-->

<!--[if lt IE 7]> pour IE inférieur à IE 7 <![endif]-->

<!--[if lte IE 6]> pour IE 5.0, IE 5.5 et IE 6.0 mais pas IE7.0 et plus <![endif]-->

<!--[if (lt IE 6)|(IE 8)]> pour IE inférieur à IE 6.0 ou si IE 8 <![endif]-->

<!--[if (gt IE 5)&(lt IE 7)]> pour IE supérieur à IE 5.0 et inférieur à IE 7 <![endif]-->

<!--[if !IE]><!--> si ce n'est pas IE <!--<![endif]-->