2010-07-21 38 views

Respuesta

55

La estructura CDATA no es realmente para HTML en absoluto, es para XML.

Las personas a veces las usan en HTML dentro de las etiquetas script porque elimina la necesidad de que escapen ciertos caracteres especiales. Sin embargo, no es un requisito (ya sea para HTML 4 o 5).

Editar: Esto es donde abrimos que realmente mohosa vieja lata de gusanos de 2002 sobre si va a enviar como XHTML text/html o como application/xhtml+xml como si estuviera “supone” que :-)

+1

Estoy enviando HTML (no XHTML) y yo quiero eso. Thxs para la respuesta :) –

+0

¿Puedo usar 'CDATA' dentro de una etiqueta' pre' para que no tenga que arreglar todos mis corchetes angulares? – gman

5

Tal vez ver: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

< [CDATA [...]] es un > un comentario falso.

En HTML, <script> ya está protegido - es por eso que a veces hay que escribir como a = "<" + "/script>", para evitar confundir al navegador. Tenga en cuenta que el código es válido fuera de un CDATA en HTML.

+2

Creo que la mejor manera de escapar de la etiqueta final es "<\/script>". He leído que algunos analizadores solo comprueban "" – marcus

+0

@marcus Tiene razón y que '', y no sé de un * explorador mainstream * donde no funciona ... –

14

El la especificación parece aclarar este problema. las etiquetas de guiones y estilos se consideran "elementos de texto sin procesar". CDATA no es necesario ni permitido para ellos. CDATA solo se usa con "contenido extranjero", es decir, MathML y ​​SVG. Tenga en cuenta que hay algunas restricciones a lo que puede ir en la etiqueta del script; básicamente, no se puede poner algo como var x = '</script>' allí porque cerrará la etiqueta y se debe dividir como se indicó en su respuesta. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

22

De la misma página @pst linked to:

Element-specific parsing for script and style tags, Orientación para Valid HTML compatibilidad: "El siguiente código de escape puede garantizar guión y elementos de estilo funcionará tanto en XHTML y HTML, entre otras cosas antiguas navegadores ".

hacia atrás compatibilidad máxima:

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

más simple versión, más o menos incompatible con "los navegadores mucho mayores":

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

Así, CDATA se puede utilizar en HTML 5, y se recomienda en la guía para compatibilidad con XHTML-HTML. Esto es útil para polyglot HTML/XML/XHTML pages, que se crean y analizan como XML durante el desarrollo, pero sirven como HTML5 para una mejor compatibilidad entre navegadores. Polyglot pages has their benefits, y lo he usado yo mismo, ya que es mucho más fácil depurar XML/XHTML5. Google Chrome, por ejemplo, lanzará un error para XML/XHTML5 no válido (que incluye, por ejemplo, character escaping), mientras que la misma página que sirve como HTML5 "simplemente funcionará" o "probablemente funcione".

+10

los comentarios dentro de una etiqueta de secuencia de comandos son necesarios si desea admitir algunos navegadores de 20 años, es decir, NSCA Mosaic o Netscape 1 ... –

Cuestiones relacionadas