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?

107
demandé sur nyuszika7h 2013-01-07 19:09:58

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.

66
répondu Quentin 2013-03-26 17:43:51

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]-->
42
répondu Matthew Haeck 2013-04-24 05:38:14

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!

30
répondu D.Alexander 2014-01-16 18:21:00
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

Voir cet article pour un éventuel correctif

2
répondu Faysal Haque 2014-04-23 16:53:53

.. 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.

2
répondu user1508429 2014-09-14 06:27:20

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
1
répondu darcyparker 2014-01-10 15:23:29

Veuillez supprimer ,chrome=1 de la balise meta, cela fonctionnera correctement. Avec validateur:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
1
répondu bharat 2016-12-31 16:57:59

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]-->
-1
répondu cinemafunk 2014-01-28 21:30:05