web-dev-qa-db-fra.com

Dois-je utiliser <! [CDATA [...]]> en HTML5?

Je suis pratiquement sure <![CDATA[...]]> les sections peuvent être utilisées en XHTML5, mais qu'en est-il de HTML5?

78
Darryl Hein

La structure CDATA n'est pas vraiment pour HTML, c'est pour XML.

Les gens les utilisent parfois en HTML dans les balises script car cela leur évite d'avoir à échapper certains caractères spéciaux. Ce n’est en aucun cas une exigence (pour HTML 4 ou 5).

Edit: C'est là que nous ouvrons cette vieille boîte de vers vraiment moisie de 2002 sur si vous envoyez du XHTML en tant que text/html ou comme application/xhtml+xml comme si vous étiez "supposé" :-)

56
hollsk

De la même page @ pst lié à :

Analyse spécifique à l'élément pour les balises script et style , Conseils pour la compatibilité XHTML-HTML : "Le code suivant avec échappement peut garantir que les éléments de script et de style fonctionneront à la fois en XHTML et en HTML, y compris les anciens navigateurs."

Compatibilité descendante maximale:

<script type="text/javascript"><!--//--><![CDATA[//><!--
    ...
//--><!]]></script>

Version plus simple, en quelque sorte incompatible avec les "navigateurs beaucoup plus anciens":

<script>//<![CDATA[
   ...
//]]></script>

Ainsi, CDATA peut être utilisé en HTML5, et il est recommandé dans le Guide de compatibilité XHTML-HTML . Ceci est utile pour polyglotte pages HTML/XML/XHTML , qui sont créées et analysées en XML pendant le développement, mais servies en HTML5 pour une meilleure compatibilité entre les navigateurs. Les pages polyglottes ont leurs avantages , et je l'ai utilisé moi-même, car il est beaucoup plus facile de déboguer XML/XHTML5. Google Chrome, par exemple, générera une erreur pour XML/XHTML5 non valide (y compris par exemple caractère d'échappement ), tandis que la même page servie en HTML5 "fonctionnera" ou "fonctionnera probablement".

23
Joel Purra

La spécification semble clarifier ce problème. les balises de script et de style sont considérées comme des "éléments de texte brut". CDATA n'est pas nécessaire ou autorisé pour eux. CDATA n'est utilisé qu'avec du "contenu étranger" - c'est-à-dire MathML et SVG. Notez qu'il y a quelques restrictions à ce qui peut se passer dans la balise de script - en gros, vous ne pouvez pas mettre quelque chose comme var x = '</script>' dedans car il fermera la balise et doit être divisé comme pst noté dans sa réponse. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

14
rmarscher

Voir peut-être: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

<! [CDATA [...]]> est un faux commentaire.

En HTML, <script> est déjà protégé - c'est pourquoi parfois il doit être écrit comme a = "<" + "/script>", pour éviter de confondre le navigateur. Notez que le code est valide en dehors d'un CDATA en HTML.

5
user166390