¿Son necesarias las etiquetas CDATA en las etiquetas de script y, en caso afirmativo, cuándo?
En otras palabras, cuándo y dónde es esto:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
preferible a esto:
<script type="text/javascript">
...code...
</script>
javascript
html
xhtml
cdata
puntilla
fuente
fuente
Respuestas:
Se requiere una sección CDATA si necesita que su documento se analice como XML (por ejemplo, cuando una página XHTML se interpreta como XML) y desea poder escribir literal
i<10
y ena && b
lugar dei<10
ya && b
, ya que XHTML analizará el código JavaScript como datos de caracteres analizados a diferencia de los datos de caracteres por defecto. Esto no es un problema con los scripts que se almacenan en archivos de origen externos, pero para cualquier JavaScript en línea en XHTML, es probable que desee utilizar una sección CDATA.Tenga en cuenta que muchas páginas XHTML nunca fueron pensadas para ser analizadas como XML, en cuyo caso esto no será un problema.
Para una buena redacción sobre el tema, consulte https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
fuente
&
y<
personajes, que no es necesario una sección CDATA; funcionará bien tanto en HTML como en XHTML. Puede lograr esto fácilmente colocando todo el código significativo en scripts externos y simplemente usando scripts en línea, por ejemplo. inicializar variables (escapar&
/<
a\x26
/\x3C
en literales de cadena si es necesario).Cuando los navegadores tratan el marcado como XML:
Cuando los navegadores tratan el marcado como HTML:
Cuando los navegadores tratan el marcado como HTML y desea que su marcado XHTML 1.0 (por ejemplo) se valide.
fuente
/* ... */
porque de lo contrario, si se eliminan los saltos de línea, el código se romperáHTML
Un analizador HTML tratará todo entre
<script>
y</script>
como parte del script.Algunas implementaciones ni siquiera necesitan una etiqueta de cierre correcta; detienen la interpretación del guión en ".</
", lo cual es correcto según las especificacionesEntonces, en HTML, esto no es posible:
Una
CDATA
sección no tiene ningún efecto . Por eso necesitas escribiro similar.
Esto también se aplica a los archivos XHTML servidos como
text/html
. (Dado que IE no admite tipos de contenido XML, esto es principalmente cierto).XML
En XML, se aplican diferentes reglas. Tenga en cuenta que los navegadores (no IE) solo usan un analizador XML si el documento XHMTL se sirve con un tipo de contenido XML.
Para el analizador XML, una
script
etiqueta no es mejor que cualquier otra etiqueta. Particularmente, un nodo de secuencia de comandos puede contener nodos secundarios sin texto, activados por "<
"; y un&
signo " " denota una entidad de carácter.Entonces, en XHTML, esto no es posible:
Para evitar esto, puede ajustar todo el script en una
CDATA
sección. Esto le dice al analizador: 'En esta sección, no trate "<
" y "&
" como caracteres de control ". Para evitar que el motor de JavaScript interprete las marcas "<![CDATA[
" y "]]>
", puede ajustarlas en comentarios.Si su script no contiene ningún "
<
" o "&
", no necesita unaCDATA
sección de todos modos.fuente
</
etiqueta de script interna es mala.<script>var b = "<b>bold</b>";</script>
no puedo validar, pero después de leer su respuesta y cambiar para<script>var b = "<b>bold<\/b>";</script>
solucionarlo.Básicamente es permitir escribir un documento que sea XHTML y HTML. El problema es que dentro de XHTML, el analizador XML interpretará los caracteres &, <,> en la etiqueta del script y causará un error de análisis XML. Por lo tanto, puede escribir su JavaScript con entidades, por ejemplo:
Pero esto no es práctico. El mayor problema es que si lee la página en HTML, el script de etiqueta se considera CDATA 'por defecto', y dicho JavaScript no se ejecutará. Por lo tanto, si desea que la misma página esté bien tanto con los analizadores XHTML como HTML, debe encerrar la etiqueta del script en el elemento CDATA en XHTML, pero NO encerrarla en HTML.
Este truco marca el inicio de un elemento CDATA como un comentario de JavaScript; en HTML, el analizador de JavaScript ignora la etiqueta CDATA (es un comentario). En XHTML, el analizador XML (que se ejecuta antes que JavaScript) lo detecta y trata el resto hasta el final de CDATA como CDATA.
fuente
Es una cosa X (HT) ML. Cuando utiliza símbolos como
<
y>
dentro del JavaScript, por ejemplo, para comparar dos enteros, esto debería analizarse como XML, por lo que se marcarían como un principio o un final de una etiqueta.El CDATA significa que las siguientes líneas (todo hasta el
]]>
no es XML y, por lo tanto, no deben analizarse de esa manera.fuente
No , no utilizar CDATA en HTML 4, pero se debe utilizar CDATA en XHTML y debe utilizar CDATA en XML si tiene símbolos sin escape como <y>.
fuente
Para garantizar que la validación XHTML funciona correctamente cuando tiene JavaScript incrustado en su página, en lugar de hacer referencia externamente.
XHTML requiere que su página cumpla estrictamente con los requisitos de marcado XML. Dado que JavaScript puede contener caracteres con un significado especial, debe envolverlo en CDATA para asegurarse de que la validación no lo marque como malformado.
Puede obtener más información sobre CDATA aquí , y más sobre XHTML aquí .
fuente
CDATA indica que los contenidos dentro no son XML.
Aquí hay una explicación en wikipedia
fuente
Cuando se trata de un cumplimiento estricto de XHTML, necesita el CDATA por lo tanto, y los símbolos no se marcan como caracteres no válidos.
fuente
para evitar errores xml durante la validación xhtml.
fuente
CDATA le dice al navegador que muestre el texto como está y que no lo represente como HTML.
fuente
CDATA indica que los contenidos dentro no son XML.
fuente
CDATA es necesario en cualquier dialecto XML, porque el texto dentro de un nodo XML se trata como un elemento hijo antes de ser evaluado como JavaScript. Esta es también la razón por la cual JSLint se queja sobre el
<
personaje en expresiones regulares.Referencias
fuente
Cuando desee que se valide (en XML / XHTML, gracias Loren Segal ).
fuente
De esa manera, los navegadores más antiguos no analizan el código Javascript y la página no se rompe.
Compatibilidad con versiones anteriores. Voy a amarlo.
fuente