55 votes

Forcer IE8 * non * à utiliser l'affichage de compatibilité

Juste mis à jour mon site de nouvelles, beaucoup plus conforme aux normes de conception. Mon ancien design était tellement ordures que j'ai eu à utiliser l'IE=EmulateIE tag force IE7 émulation.

Malheureusement, je crois que les navigateurs peut être mise en cache de ce paramètre à partir de précédentes visites, causant de mon nouveau site (qui ressemble beaucoup sans le bouton enfoncé) pour examiner les déchets de nouveau...

Est-il en face de la balise que je pouvais l'utiliser, ou d'un peu de magie je peux faire du PHP faire pour les en-têtes HTTP désactiver la mise en cache de ce paramètre?

51voto

Tim Goodman Points 7792

En l'absence d'un X-UA-Compatible http-equiv d'en-tête, le mode de compatibilité est déterminé par l' !DOCTYPE (ou de l'absence d'un !DOCTYPE, selon le cas peut être). Pour un graphique dont !DOCTYPE vous donne le mode (dans différents navigateurs) voir ici:

http://hsivonen.iki.fi/doctype/ (Vous aurez besoin de faire défiler vers le bas de la page).

Vous pouvez contourner ce problème en utilisant un meta élément pour spécifier un X-UA-Compatible http-equiv-tête, comme suit: <meta http-equiv="X-UA-Compatible" content="IE=edge" >

(Remarque: IE=edge va de pair avec la plus haute version disponible -- actuellement IE8 que de cette annonce-ou on peut spécifier explicitement IE8.)

Pour plus d'informations, voir ici: http://msdn.microsoft.com/en-us/library/cc288325(SV.85).aspx

8voto

toneplex Points 543

Vous pouvez également définir l'en-tête compatible X-UA dans Apache, via la configuration ou un fichier .htaccess à l'aide du code ci-dessous. Le crédit va à html5boilerplate.com

 # ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------

# Force the latest IE version, in various cases when it may fall back to IE7 mode
# github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    BrowserMatch MSIE ie
    Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
  </IfModule>
</IfModule>

<IfModule mod_headers.c>
#
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes), we need to inform proxies that content changes based on UA
#
  Header append Vary User-Agent
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
</IfModule>
 

5voto

Michael Benny Points 383

IE ne seront jamais mettre en cache les X-UA-paramètre de Compatibilité sur son propre. La seule autre possibilité est que les utilisateurs du site s'appuie sur "Affichage de Compatibilité" bouton sur la barre d'adresse avant que vous avez eu la X-UA-Compatbile de la balise meta ensemble. Puis de domaine de votre site apparaissent dans une liste stockée localement sur la machine du client. J'ai écrit un billet de blog sur la façon dont les propriétaires de site peuvent taillent leurs domaines de celle stockée localement liste si/quand un site est mis à jour pour être compatible IE8. http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx

5voto

jasonflaherty Points 664

Je sais que ce post est vieux, mais je trouve que l'ajouter à votre fichier .htaccess:

 Header set X-UA-Compatible "IE=edge"
 

... pour être plus gérable que de l'ajouter à des pages.

J'espère que ça aide quelqu'un.

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