type script llamar insertar externo ejemplos desde cómo codigo archivo javascript html xhtml cdata

javascript - llamar - ¿Cuándo es necesaria una sección CDATA dentro de una etiqueta de script?



llamar javascript desde html (15)

HTML

Un analizador de 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 script en " </ ", que es correcta de acuerdo con las specs .

Actualizar en HTML5, y con los navegadores actuales, ese ya no es el caso.

Entonces, en HTML, esto no es posible:

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

Una sección CDATA no tiene ningún efecto . Es por eso que necesitas escribir

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

o 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 cierto en su mayoría).

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 etiqueta de script no es mejor que cualquier otra etiqueta. En particular, un nodo de script puede contener nodos secundarios sin texto, activados por " < "; y un signo " & " denota una entidad de carácter.

Entonces, en XHTML, esto no es posible:

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

Para evitar esto, puede envolver todo el script en una sección CDATA . Esto le dice al analizador: ''En esta sección, no trate a " < " y " & " como caracteres de control ''. Para evitar que el motor de JavaScript interprete las marcas " <![CDATA[ " y " ]]> ", puede envolverlas en comentarios.

Si su script no contiene ninguna " < " o " & ", no necesita una sección CDATA todos modos.

¿Las etiquetas CDATA son siempre necesarias 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>


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. Entonces, puedes escribir tu JavaScript con entidades, por ejemplo:

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

Pero esto no es práctico. El mayor problema es que si lees la página en HTML, la secuencia de comandos de la etiqueta se considera CDATA "por defecto", y ese JavaScript no se ejecutará. Por lo tanto, si desea que la misma página sea correcta tanto en el uso de analizadores XHTML como HTML, debe incluir la etiqueta de script en el elemento CDATA en XHTML, pero NO para incluirla 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 de JavaScript) lo detecta y trata el resto hasta el final de CDATA como CDATA.



CDATA indica que los contenidos no son XML.


CDATA indica que los contenidos no son XML.

Aquí hay una explicación en wikipedia


CDATA le dice al navegador que muestre el texto tal como está y que no lo represente como un HTML.


Cuando los navegadores tratan el marcado como XML:

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

Cuando los navegadores tratan el marcado como HTML:

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

Cuando los navegadores tratan el marcado como HTML y desea que su marcado XHTML 1.0 (por ejemplo) se valide.

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


Cuando opta por un cumplimiento estricto de XHTML, necesita el CDATA, por lo que menos de y los símbolos no se marcan como caracteres no válidos.


De esa manera, el navegador antiguo no analiza el código Javascript y la página no se rompe.

Compatibilidad hacia atrás. Voy a amarlo.


Es una cosa X (HT) ML. Cuando use símbolos como < y > dentro del JavaScript, por ejemplo, para comparar dos enteros, esto tendría que analizarse como XML, por lo que se marcarían como principio o 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.


No use CDATA en HTML4, pero debe usar CDATA en XHTML y debe usar CDATA en XML si tiene símbolos que no se han escapado como <y>.


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 a && b lugar de i&lt;10 y a &amp;&amp; b a &amp;&amp; b , ya que XHTML analizará el código JavaScript como datos de caracteres analizados en lugar de datos de caracteres de forma predeterminada. 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 probablemente querrá usar una sección CDATA.

Tenga en cuenta que muchas de las páginas XHTML nunca se analizaron como XML, en cuyo caso esto no será un problema.

Para una buena reseña sobre el tema, consulte http://javascript.about.com/library/blxhtml.htm


para evitar errores xml durante la validación xhtml.



Es para garantizar que la validación de XHTML funcione correctamente cuando tenga JavaScript incrustado en su página, en lugar de referencias externas.

XHTML requiere que su página se ajuste estrictamente a 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 incorrecto.

Con las páginas HTML en la web, solo puede incluir el JavaScript requerido entre las etiquetas y. Al validar el HTML en su página web, el contenido de JavaScript se considera CDATA (datos de caracteres) que, por lo tanto, el validador ignora. Lo mismo no es cierto si sigue los estándares XHTML más recientes al configurar su página web. Con XHTML, el código entre las etiquetas de script se considera PCDATA (datos de caracteres analizados) que, por lo tanto, es procesado por el validador.

Debido a esto, no puede simplemente incluir JavaScript entre las etiquetas de script en su página sin "romper" su página web (al menos en lo que respecta al validador).

Puede obtener más información sobre CDATA aquí y más sobre XHTML aquí .