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>
CDATA
Sekcja 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 script
znacznik 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 CDATA
sekcję. 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 CDATA
sekcji.