Mauvaise valeur X-UA-Compatible pour l'attribut http-equiv sur l'élément meta
J'ai utilisé le même {[1] } Que HTML5 Boilerplate utilise, et le validateur HTML W3C se plaint:
Mauvaise Valeur X-UA-Compatible pour l'attribut http-equiv sur l'élément meta.
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
Quel est le problème avec cette balise meta
?
8 réponses
Soit X-UA-Compatible n'est pas" standard "HTML (FSVO "standard" qui implique d'apparaître sur une page wiki publiquement modifiable référencée par la spécification) ou le validateur n'est pas à jour avec l'état 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 dans la spécification HTML et ne sont donc pas encore autorisées dans les documents valides."Donc, le validateur est correct de rejeter cette valeur.
Si vous cherchez à le rendre techniquement valide (tout le monde aime voir le favicon vert) sans effectuer aucune fonctionnalité, vous devriez être capable de l'envelopper dans une balise "if IE".
<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
Une solution possible est d'implémenter un correctif côté serveur dans l'en-tête, comme suggéré dans Cette belle écriture par Aaron Layton. (Tout le crédit devrait aller à lui, et je vais paraphraser plutôt que de plagier...)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
" Quand Internet Explorer vient à travers cette ligne, il va changer le moteur qui est utilisé à la première image Chrome, si le plugin est installé, puis à Edge (le mode de document le plus élevé pris en charge de la navigateur)."
Les Étapes:
- corrigez la validation de la page-Ceci est réalisé en supprimant simplement la balise
- Vitesse de rendu-au lieu d'attendre que le navigateur voit la balise et change de mode, nous enverrons le mode correct dès le départ en tant qu'en-tête de réponse
- assurez-vous que nous montrons seulement le correctif pour Internet Explorer-Nous allons simplement utiliser une détection de navigateur côté serveur et seulement l'Envoyer à IE
Pour ajouter L'en-tête en PHP, Nous pouvons simplement ajouter 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'ajouter à votre .fichier htaccess comme ceci:
<FilesMatch "\.(htm|html|php)$">
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</FilesMatch>
Lien vers l'article original, vérifier les commentaires pour les mises en garde possibles. Comprend également une implémentation pour C#.
Correction D'une mauvaise valeur compatible X-UA une fois pour Toutes
Espérons que cela aide!
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
.. 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 qu'il est utile aux autres aussi.
Si vous téléchargez/construisez le code src du validateur, vous pouvez ajouter 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 cela fonctionne bien pour valider.
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 = attribute http-equiv {
xsd:string {
pattern = "X-UA-Compatible"
}
}
meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
xsd:string {
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
Veuillez supprimer ,chrome=1
de la balise meta, cela fonctionnera correctement. Avec validateur:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
J'ai eu le même problème et ajouter et entourer toute cette ligne a corrigé la situation.
<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->