Je viens de mettre à jour mon site vers une conception plus récente et bien plus conforme aux normes. Ma conception précédente était tellement détraquée que j'ai dû utiliser la balise IE = EmulateIE pour forcer l'émulation IE7.
Malheureusement, je pense que les navigateurs peuvent mettre en cache ce paramètre lors des visites précédentes, ce qui fait que mon nouveau site (qui a fière allure sans appuyer sur le bouton) a de nouveau l'air de détritus ...
Y a-t-il une balise opposée que je pourrais utiliser, ou une magie que je peux faire PHP faire pour les en-têtes HTTP désactiver la mise en cache de ce paramètre?
En l'absence d'en-tête http-equiv compatible X-UA, le mode de compatibilité est déterminé par !DOCTYPE
(ou l'absence d'un !DOCTYPE
, selon le cas). Pour un graphique dont !DOCTYPE
vous donne quel mode (dans différents navigateurs) voir ici:
http://hsivonen.iki.fi/doctype/ (Vous devrez faire défiler vers le bas de la page.)
Vous pouvez remplacer ce comportement en utilisant un élément meta
pour spécifier un en-tête http-equiv compatible X-UA, comme ceci: <meta http-equiv="X-UA-Compatible" content="IE=Edge" >
(Remarque: IE = Edge va avec la version la plus élevée disponible - actuellement IE8 au moment de cette publication - ou on peut spécifier explicitement IE8.)
Pour plus d'informations, voir ici: http://msdn.Microsoft.com/en-us/library/cc288325 (VS.85) .aspx
Vous pouvez également définir l'en-tête compatible X-UA dans Apache, via la configuration ou un fichier .htaccess en utilisant le code ci-dessous. Le crédit revient à 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>
IE ne mettra jamais en cache le paramètre de compatibilité X-UA seul. La seule autre possibilité est que les utilisateurs du site ont appuyé sur le bouton "Affichage de compatibilité" dans la barre d'adresse avant que le méta-tag X-UA-Compatbile ne soit défini. Le domaine de votre site apparaîtra alors dans une liste stockée localement sur la machine du client. J'ai écrit un article de blog sur la façon dont les propriétaires de sites peuvent élaguer leurs domaines à partir de cette liste stockée localement si/quand un site est mis à jour pour être compatible avec IE8. http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx
Je sais que ce message est ancien, mais je trouve l'ajouter à votre fichier .htaccess:
Header set X-UA-Compatible "IE=Edge"
... pour être plus gérable que l'ajouter aux pages.
J'espère que cela aide quelqu'un.