HTML
Parser HTML potraktuje wszystko pomiędzy <script>i </script>jako część skryptu. Niektóre implementacje nawet nie wymagają poprawnego tagu zamykającego; zatrzymują interpretację skryptu na „ </”, co jest poprawne zgodnie ze specyfikacją .
Aktualizacja W HTML5 i przy obecnych przeglądarkach tak już nie jest.
W HTML nie jest to możliwe:
<script>
var x = '</script>';
alert(x)
</script>
CDATASekcja ma żadnego efektu . Dlatego musisz pisać
var x = '<' + '/script>'; // or
var x = '<\/script>';
lub podobne.
Dotyczy to również plików XHTML obsługiwanych jako text/html. (Ponieważ IE nie obsługuje typów treści XML, jest to w większości prawdą).
XML
W XML obowiązują inne reguły. Uwaga: przeglądarki (inne niż IE) używają analizatora składni XML tylko wtedy, gdy dokument XHMTL jest obsługiwany z typem treści XML.
Dla parsera XML scriptznacznik nie jest lepszy niż jakikolwiek inny znacznik. W szczególności węzeł skryptowy może zawierać nietekstowe węzły potomne, uruchamiane przez „ <”; a znak „ &” oznacza byt postaci.
W XHTML nie jest to możliwe:
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
Aby obejść ten problem, możesz zawinąć cały skrypt w CDATAsekcję. Mówi to parserowi: „W tej sekcji nie traktuj„ <”i„ &”jako znaków kontrolnych .” Aby uniemożliwić silnikowi JavaScript interpretację znaków „ <![CDATA[” i „ ]]>”, możesz zawinąć je w komentarze.
Jeśli twój skrypt nie zawiera żadnych „ <” ani „ &”, i tak nie potrzebujesz żadnej CDATAsekcji.