HTML
Pengurai HTML akan memperlakukan semuanya antara <script>
dan </script>
sebagai bagian dari skrip. Beberapa implementasi bahkan tidak memerlukan tag penutup yang benar; mereka menghentikan interpretasi skrip di " </
", yang sesuai dengan spesifikasi .
Perbarui dalam HTML5, dan dengan browser saat ini, itu tidak lagi terjadi.
Jadi, dalam HTML, ini tidak mungkin:
<script>
var x = '</script>';
alert(x)
</script>
Sebuah CDATA
bagian memiliki pengaruh sama sekali . Itu sebabnya Anda perlu menulis
var x = '<' + '/script>'; // or
var x = '<\/script>';
atau serupa.
Ini juga berlaku untuk file XHTML yang disajikan sebagai text/html
. (Karena IE tidak mendukung tipe konten XML, ini sebagian besar benar.)
XML
Dalam XML, aturan yang berbeda berlaku. Perhatikan bahwa browser (bukan IE) hanya menggunakan parser XML jika dokumen XHMTL disajikan dengan tipe konten XML.
Untuk parser XML, script
tag tidak lebih baik dari tag lainnya. Khususnya, simpul skrip dapat berisi simpul anak non-teks, yang dipicu oleh " <
"; dan tanda " &
" menunjukkan entitas karakter.
Jadi, di XHTML, ini tidak mungkin:
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
Untuk mengatasinya, Anda dapat membungkus seluruh skrip dalam satu CDATA
bagian. Ini memberi tahu parser: 'Di bagian ini, jangan memperlakukan " <
" dan " &
" sebagai karakter kontrol .' Untuk mencegah mesin JavaScript menafsirkan tanda " <![CDATA[
" dan " ]]>
", Anda dapat membungkusnya dalam komentar.
Jika skrip Anda tidak mengandung " <
" atau " &
" apa pun, Anda tidak perlu CDATA
bagian.