HTML
Un parser HTML tratterà tutto tra <script>
e </script>
come parte dello script. Alcune implementazioni non hanno nemmeno bisogno di un tag di chiusura corretto; interrompono l'interpretazione dello script in " </
", che è corretto secondo le specifiche .
Aggiornamento In HTML5, e con i browser attuali, non è più così.
Quindi, in HTML, questo non è possibile:
<script>
var x = '</script>';
alert(x)
</script>
Una CDATA
sezione non ha alcun effetto . Ecco perché devi scrivere
var x = '<' + '/script>'; // or
var x = '<\/script>';
o simili.
Questo vale anche per i file XHTML serviti come text/html
. (Poiché IE non supporta i tipi di contenuto XML, questo è principalmente vero.)
XML
In XML, si applicano regole diverse. Si noti che i browser (non IE) utilizzano un parser XML solo se il documento XHMTL è offerto con un tipo di contenuto XML.
Per il parser XML, un script
tag non è migliore di qualsiasi altro tag. In particolare, un nodo di script può contenere nodi secondari non di testo, attivati da " <
"; e un &
segno " " indica un'entità personaggio.
Quindi, in XHTML, questo non è possibile:
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
Per ovviare a questo, è possibile avvolgere l'intero script in una CDATA
sezione. Questo dice al parser: 'In questa sezione, non trattare " <
" e " &
" come caratteri di controllo . " Per impedire al motore JavaScript di interpretare i segni " <![CDATA[
" e " ]]>
", puoi racchiuderli nei commenti.
Se il tuo script non contiene " <
" o " &
", non hai comunque bisogno di una CDATA
sezione.