Valeur incorrecte Compatible X-UA pour l’atsortingbut http-equiv sur la méta d’élément

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.

  

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 :

    • Corrige la validation de la page – Ceci est réalisé en retirant simplement la balise
    • Vitesse de rendu – Au lieu d’attendre que le navigateur voie la balise puis change de mode, nous enverrons le mode correct en amont en tant qu’en-tête de réponse
    • Assurez-vous que nous montrons uniquement le correctif pour Internet Explorer – Nous allons simplement utiliser une détection de navigateur côté serveur et l’envoyer uniquement à IE

    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.