Apakah tag CDATA pernah diperlukan dalam tag skrip dan jika demikian kapan?
Dengan kata lain, kapan dan di mana ini:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
lebih disukai dari ini:
<script type="text/javascript">
...code...
</script>
javascript
html
xhtml
cdata
brad
sumber
sumber
Jawaban:
Bagian CDATA diperlukan jika Anda memerlukan dokumen Anda untuk diuraikan sebagai XML (misalnya ketika halaman XHTML diartikan sebagai XML) dan Anda ingin dapat menulis secara literal
i<10
dana && b
bukannyai<10
a && b
, dan , karena XHTML akan mengurai kode JavaScript sebagai data karakter yang diuraikan sebagai lawan dari data karakter secara default. Ini bukan masalah dengan skrip yang disimpan dalam file sumber eksternal, tetapi untuk setiap JavaScript inline di XHTML Anda mungkin ingin menggunakan bagian CDATA.Perhatikan bahwa banyak halaman XHTML tidak pernah dimaksudkan untuk diuraikan sebagai XML dalam hal ini ini tidak akan menjadi masalah.
Untuk artikel yang bagus tentang masalah ini, lihat https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
sumber
&
dan<
karakter, Anda tidak perlu bagian CDATA; itu akan bekerja dengan baik di HTML dan XHTML. Anda dapat dengan mudah mencapai ini dengan meletakkan semua kode signifikan dalam skrip eksternal dan hanya menggunakan skrip inline untuk misalnya. inisialisasi variabel (melarikan diri&
/<
ke\x26
/\x3C
dalam string literal jika Anda perlu).Saat browser memperlakukan markup sebagai XML:
Saat browser memperlakukan markup sebagai HTML:
Saat browser memperlakukan markup sebagai HTML dan Anda ingin markup XHTML 1.0 Anda (misalnya) divalidasi.
sumber
/* ... */
karena jika tidak jeda baris dihapus, kode akan rusakHTML
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 spesifikasiJadi, dalam HTML, ini tidak mungkin:
Sebuah
CDATA
bagian memiliki pengaruh sama sekali . Itu sebabnya Anda perlu menulisatau 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:
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 perluCDATA
bagian.sumber
</
di dalamnya buruk.<script>var b = "<b>bold</b>";</script>
gagal memvalidasi tetapi setelah membaca jawaban Anda dan mengubahnya untuk<script>var b = "<b>bold<\/b>";</script>
memperbaikinya.Pada dasarnya itu adalah memungkinkan untuk menulis dokumen yang XHTML dan HTML. Masalahnya adalah bahwa dalam XHTML, parser XML akan menginterpretasikan karakter &, <,> dalam tag skrip dan menyebabkan kesalahan parsing XML. Jadi, Anda dapat menulis JavaScript dengan entitas, misalnya:
Tapi ini tidak praktis. Masalah yang lebih besar adalah bahwa jika Anda membaca halaman dalam HTML, skrip tag dianggap CDATA 'secara default', dan JavaScript tersebut tidak akan berjalan. Oleh karena itu, jika Anda ingin halaman yang sama baik-baik saja menggunakan XHTML dan parser HTML, Anda harus menyertakan tag skrip dalam elemen CDATA di XHTML, tetapi TIDAK untuk menyertakannya dalam HTML.
Trik ini menandai dimulainya elemen CDATA sebagai komentar JavaScript; dalam HTML parser JavaScript mengabaikan tag CDATA (ini adalah komentar). Dalam XHTML, parser XML (yang dijalankan sebelum JavaScript) mendeteksi dan memperlakukan sisanya hingga akhir CDATA sebagai CDATA.
sumber
Ini hal X (HT) ML. Ketika Anda menggunakan simbol seperti
<
dan>
dalam JavaScript, misalnya untuk membandingkan dua bilangan bulat, ini harus diuraikan seperti XML, sehingga mereka akan menandai sebagai awal atau akhir tag.CDATA berarti bahwa baris berikut (semuanya sampai
]]>
bukan XML dan karenanya tidak boleh diuraikan seperti itu.sumber
Apakah tidak menggunakan CDATA di HTML4 tetapi Anda harus menggunakan CDATA dalam XHTML dan harus menggunakan CDATA dalam XML jika Anda memiliki simbol unescaped seperti <dan>.
sumber
Itu untuk memastikan bahwa validasi XHTML berfungsi dengan benar ketika Anda memiliki JavaScript yang disematkan di halaman Anda, daripada dirujuk secara eksternal.
XHTML mengharuskan halaman Anda secara ketat mematuhi persyaratan markup XML. Karena JavaScript dapat berisi karakter dengan makna khusus, Anda harus membungkusnya dalam CDATA untuk memastikan bahwa validasi tidak menandainya sebagai cacat.
Anda dapat mempelajari lebih lanjut tentang CDATA di sini , dan lebih banyak tentang XHTML di sini .
sumber
CDATA menunjukkan bahwa konten di dalamnya bukan XML.
Berikut ini penjelasan tentang wikipedia
sumber
Saat Anda menjalankan kepatuhan XHTML yang ketat, Anda memerlukan CDATA sehingga kurang dari dan ampersand tidak ditandai sebagai karakter yang tidak valid.
sumber
untuk menghindari kesalahan xml selama validasi xhtml.
sumber
CDATA memberi tahu peramban untuk menampilkan teks apa adanya dan tidak menjadikannya sebagai HTML.
sumber
CDATA menunjukkan bahwa konten di dalamnya bukan XML.
sumber
CDATA diperlukan dalam setiap dialek XML, karena teks dalam simpul XML diperlakukan sebagai elemen anak sebelum dievaluasi sebagai JavaScript. Ini juga alasan mengapa JSLint mengeluh tentang
<
karakter dalam regex.Referensi
sumber
Saat Anda ingin memvalidasi (dalam XML / XHTML - terima kasih, Loren Segal ).
sumber
Dengan begitu browser lama tidak mem-parsing kode Javascript dan halaman tidak rusak.
Kompatibilitas mundur. Akan menyukainya.
sumber