0

Il semble que lorsque la page Web aIl semble que "IE = EmulateIE7" fera aussi "<! - [if lt IE 8]>" être vrai?

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' /> 

de telle sorte que IE 8 émule IE 7, puis plus tard dans la page web, quand il y a

<!--[if lt IE 8]> 
    <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" /> 
<![endif]--> 

il sera également de charger ie.css?

Autrement dit, c'est IE 8, émulant IE 7, et ainsi le lt IE 8 sera true?

Mise à jour: mais la variable côté serveur HTTP_USER_AGENT continuera de dire IE 8? Parce que le navigateur va sur le serveur comme IE 8, donne IE 8 comme la chaîne de HTTP_USER_AGENT, puis le serveur répond avec vouloir émuler IE 7. Donc si le langage du serveur tel que PHP détecte HTTP_USER_AGENT, il sera toujours IE 8 dans le mode de compatibilité (IE 7 mode d'émulation)?

+2

Je n'ai pas de faits, mais cela ressemble à la façon raisonnable pour IE de se comporter. –

+0

N'est-ce pas ce que vous attendez? Si le navigateur se comporte comme IE7, alors ne voudriez-vous pas faire quelque chose que seul IE <8 ferait? – pkaeding

Répondre

1

C'est tout le point de cette balise meta, n'est-ce pas? Dès que vous avez ceci:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' /> 

IE8 commence à se comporter sur le côté client comme IE7:

  • Vos pages seront tous rendre comme ils le feraient dans IE7
  • Vos commentaires conditionnels ciblant tout de plus de IE8 (<!--[if lt IE 8]>) sera également lu, et le code intérieur exécuté, alors ie.cssest chargé

Toutefois, le commutateur IE7 a uniquement lieu après que IE8 a lu cette balise META. Étant donné que votre code HTML est renvoyé dans le cadre de la réponse, IE8 doit d'abord le demander. Comme IE8 n'a aucune idée à l'avance que cette balise meta, la chaîne user-agent qu'elle envoie est MSIE 8.0. PHP reconnaît ensuite comme IE8.

0

Si vous souhaitez une solution différente (et que vous souhaitez l'utiliser), vous pouvez utiliser jquery pour détecter le navigateur (jQuery.browser). Il en résulte avec ie7 pour ie8 en mode compatibilité.

0

Si vous dites ie8 pour émuler ie7, vous pouvez avoir confiance que votre css pour IE7 devrait fonctionner correctement. Utilisez juste lte au lieu de lt.

<!--[if IE 8]> 
    <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' /> 
<![endif]--> 
<!--[if lte IE 8]> 
    <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" /> 
<![endif]--> 
Questions connexes