J’ai utilisé le même meta
que HTML5 Boilerplate et le validateur HTML du W3C se plaint:
Mauvaise valeur Compatible X-UA pour l’atsortingbut http-equiv sur les méta d’élément.
- Qu'est-ce que X-UA-Compatible quand il fait référence à IE = edge, chrome = 1?
- X-UA-Compatible est défini sur IE = edge, mais n'arrête toujours pas le mode de compatibilité
- Forcer le mode navigateur «Internet Explorer 8» dans l'intranet
- Force IE9 à émuler IE8. Possible?
- Comment désactiver le mode de compatibilité d'IE du côté serveur?
Quel est le problème avec cette balise meta
?
Soit X-UA-Compatible n’est pas “standard” HTML (FSVO “standard” qui implique d’apparaître sur une page wiki publiquement éditable référencée par la spécification) ou le Validator n’est pas à jour avec le statut actuel de ce wiki.
Au moment de la rédaction (20130326), X-UA-Compatible apparaît sur la page wiki sous une section qui stipule: “Les extensions proposées suivantes ne sont pas encore conformes à toutes les exigences d’enregistrement de la spécification HTML et ne sont donc pas encore valides documents. ” Donc, le validateur est correct pour rejeter cette valeur.
Si vous cherchez à le rendre techniquement valide (tout le monde aime voir la favicon verte) sans affecter aucune fonctionnalité, vous devriez pouvoir l’envelopper dans une balise “if IE”.
Une solution possible consiste à implémenter un correctif côté serveur dans l’en-tête, comme le suggère cette agréable description d’Aaron Layton. (Tout crédit devrait aller à lui, et je paraphraserai plutôt que plagier …)
“Lorsque Internet Explorer rencontrera cette ligne, il modifiera le moteur utilisé au premier Chrome Frame, si le plug-in est installé, puis sur Edge (le mode de document le plus pris en charge par le navigateur).”
Étapes :
Pour append l’en-tête en PHP, nous pouvons simplement append ceci à notre page:
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) header('X-UA-Compatible: IE=edge,chrome=1');
Ou vous pouvez l’append à votre fichier .htaccess comme ceci:
BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
Lien vers l’article original, vérifiez les commentaires pour d’éventuelles réserves. Inclut également une implémentation pour C #.
Fixe une mauvaise valeur X-UA-Compatible une fois pour toutes
J’espère que cela t’aides!
Voir cet article pour un correctif possible
.. cela peut-il être une bonne réponse?
Définir l’en-tête HTTP avec PHP:
Ce n’est pas mon propre travail mais j’espère que cela sera utile aux autres aussi.
Si vous téléchargez / comstackz le code src du validateur, vous pouvez append le support vous-même.
Ajoutez ce qui suit à un fichier tel que html5-meta-X-UA-Compatible.rnc
) Puis incluez-le dans html5full.rnc
.
Je l’ai fait et ça marche bien pour la validation.
meta.http-equiv.X-UA-Compatible.elem = element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs } meta.http-equiv.X-UA-Compatible.attrs = ( common.attrs.basic & common.attrs.i18n & common.attrs.present & common.attrs.other & meta.http-equiv.attrs.http-equiv.X-UA-Compatible & meta.http-equiv.attrs.content.X-UA-Compatible & ( common.attrs.aria.role.presentation | common.attrs.aria.role.menuitem )? ) meta.http-equiv.attrs.http-equiv.X-UA-Compatible = atsortingbute http-equiv { xsd:ssortingng { pattern = "X-UA-Compatible" } } meta.http-equiv.attrs.content.X-UA-Compatible = atsortingbute content { xsd:ssortingng { pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?" } } common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem
S’il vous plaît supprimer ,chrome=1
de la balise meta cela fonctionnera correctement. Avec validateur:
J’ai eu le même problème en ajoutant et en entourant toute cette ligne pour remédier à la situation.