Pregunta

Son CDATA etiquetas vez es necesaria etiquetas de secuencia de comandos y si es así ¿cuándo?

En otras palabras, cuando y donde es este:

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

preferible a esto:

<script type="text/javascript">
...code...
</script>
¿Fue útil?

Solución

Una sección CDATA es necesario si usted necesita su documento a analizar como XML (por ejemplo,cuando una página XHTML se interpreta como XML) y usted quiere ser capaz de escribir literal i<10 y a && b en lugar de i&lt;10 y a &amp;&amp; b, como XHTML analizará el código JavaScript como analiza datos de carácter frente a los datos de caracteres por defecto.Este no es un problema con los scripts que se almacenan en la fuente externa de archivos, pero para cualquier en línea de JavaScript en XHTML se le probablemente desea utilizar una sección CDATA.

Tenga en cuenta que muchas páginas XHTML nunca fueron destinados a ser analizado como XML, en el que caso de que esto no será un problema.

Para una buena valoración crítica sobre el tema, ver https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm

Otros consejos

Cuando los navegadores tratar el marcado XML:

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

Cuando los navegadores tratar el marcado HTML:

<script>
    ...code...
</script>

Cuando los navegadores tratar el marcado como HTML y quieres que tu XHTML 1.0 marcado (por ejemplo) para validar.

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

HTML

Un analizador de HTML va a tratar todo lo que entre <script> y </script> como parte de la secuencia de comandos. Algunas implementaciones ni siquiera necesitan un correcto cierre de la etiqueta;dejan de secuencia de comandos de la interpretación "</", que es correcto de acuerdo a la especificaciones.

Actualización En HTML5, y con los navegadores actuales, que ya no es el caso.

Así, en HTML, este es no posible:

<script>
var x = '</script>';
alert(x)
</script>

Un CDATA la sección ha la ausencia de efecto.Es por eso que usted necesita para escribir

var x = '<' + '/script>'; // or
var x = '<\/script>';

o similar.

Esto también se aplica a los archivos XHTML servido como text/html.(Desde IE no soporta XML tipos de contenido, esto es sobre todo cierto.)

XML

En XML, se aplican reglas diferentes.Tenga en cuenta que (no IE) de los navegadores de sólo utilizar un analizador XML si la XHMTL documento se sirve con un XML tipo de contenido.

Para el analizador XML, un script la etiqueta no es mejor que cualquier otra etiqueta.En particular, un nodo script puede contener no-texto nodos secundarios, provocada por la "<";y un "&"signo denota un carácter de entidad.

Así, en XHTML, esto es no posible:

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

Para evitar esto, usted puede ajustar la secuencia de comandos completa en un CDATA sección.Esto indica que el analizador:'En esta sección, no tratar "<"y "&"como caracteres de control.' Para evitar que el motor de JavaScript de la interpretación de la "<![CDATA["y "]]>"las marcas, puede envolver de ellos en los comentarios.

Si el script no contiene ninguna "<"o "&"usted no necesita un CDATA la sección de todos modos.

Básicamente se trata de permitir a escribir un documento que es XHTML y HTML.El problema es que dentro de XHTML, XML parser de interpretar el &,<,> caracteres en el secuencia de comandos la etiqueta y de la causa XML parsing error.Así, usted puede escribir su JavaScript con entidades, por ejemplo:

if (a &gt; b) alert('hello world');

Pero esto es poco práctico.El mayor problema es que si lees la página en HTML, la etiqueta secuencia de comandos se considera CDATA 'por defecto', y JavaScript no se ejecuta.Por lo tanto, si se desea la misma página para estar bien tanto el uso de XHTML y HTML, analizadores, deberá incluir el secuencia de comandos etiqueta CDATA elemento XHTML, pero NO para encerrar en HTML.

Este truco marca el inicio de una CDATA elemento como JavaScript comentario;en HTML, el JavaScript analizador ignora la CDATA etiqueta (es un comentario).En XHTML, XML parser (que se ejecuta antes de que el JavaScript) lo detecta y trata el resto hasta el final de la CDATA como CDATA.

Es una X(HT)ML cosa.Cuando el uso de símbolos como < y > en el JavaScript, por ejemplo,para la comparación de dos números enteros, esto tendría que ser analizado como XML, por lo que marcaría como un principio o al final de una etiqueta.

CDATA significa que las líneas siguientes (todo a la ]]> no es XML y por lo tanto no debe ser interpretado de esa manera.

¿ no uso CDATA en HTML4, pero usted debe uso CDATA en XHTML y debe uso CDATA en XML si usted tiene sin escape símbolos como < y >.

Para asegurarse de que el XHTML validación funciona correctamente cuando usted tiene JavaScript incrustado en su página, en lugar de referencia externos.

XHTML requiere que su página se ajuste estrictamente a los requisitos de marcado XML.Desde JavaScript puede contener caracteres con un significado especial, se debe envolver en CDATA para asegurarse de que la validación no marca como incorrecto.

Con páginas HTML en la web sólo se puede incluir el JavaScript necesario entre y etiquetas.Al validar el código HTML en su página web el contenido de JavaScript que se considera CDATA (datos de caracteres) que es, por tanto, ignorados por el validador.El mismo no es cierto si usted sigue los más recientes estándares XHTML en la configuración de su página web.Con XHTML el código entre las etiquetas de secuencia de comandos se considera PCDATA (analizar los datos de carácter) que por lo tanto es procesada por el validador.

Debido a esto, usted no puede incluir JavaScript entre las etiquetas de secuencia de comandos en su página sin 'romper' de su página web (al menos hasta el validador se refiere).

Usted puede aprender más sobre CDATA aquí, y más información sobre XHTML aquí.

CDATA indica que el contenido no son XML.

Aquí está una explicación sobre wikipedia

Cuando usted va para XHTML estricto cumplimiento, necesita la CDATA por lo menos y signos no están marcados como caracteres no válidos.

para evitar errores de xml durante xhtml validación.

CDATA le dice al navegador para mostrar el texto tal y como está y no dejarlo como un archivo HTML.

CDATA indica que el contenido no son XML.

CDATA es necesaria en cualquier dialecto XML, puesto que el texto dentro de un nodo XML es tratada como un elemento secundario antes de ser evaluado como JavaScript.Esta es también la razón por la que JSLint se queja acerca de la < personaje en expresiones regulares.

Referencias

Cuando usted lo desee validar (en XML/XHTML - gracias, Loren Segal).

Que manera más antiguas de navegadores no analizar el código Javascript y la página no se rompe.

Compatibilidad con versiones anteriores.Gotta love it.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top