HTML
HTML ayrıştırıcısı , komut dosyası arasındaki <script>
ve </script>
komut dosyasının bir parçası olarak her şeyi ele alır . Bazı uygulamaların doğru bir kapanış etiketine bile ihtiyacı yoktur; özelliklerine</
göre doğru olan " " dilinde kod yorumlamasını durdururlar .
Güncelleme HTML5'te ve mevcut tarayıcılarda artık durum böyle değil.
Dolayısıyla, HTML'de bu mümkün değildir :
<script>
var x = '</script>';
alert(x)
</script>
Bir CDATA
bölümün hiçbir etkisi yoktur . Bu yüzden yazman gerekiyor
var x = '<' + '/script>'; // or
var x = '<\/script>';
veya benzeri.
Bu, olarak sunulan XHTML dosyaları için de geçerlidir text/html
. (IE XML içerik türlerini desteklemediğinden, bu çoğunlukla doğrudur.)
XML
XML'de farklı kurallar geçerlidir. (IE olmayan) tarayıcıların yalnızca XHMTL belgesi bir XML içerik türüyle sunuluyorsa XML ayrıştırıcı kullandığını unutmayın.
XML ayrıştırıcısı için, bir script
etiket diğer herhangi bir etiketten daha iyi değildir. Özellikle, bir komut dosyası düğümü " <
" tarafından tetiklenen metin olmayan alt düğümler içerebilir ; ve " &
" işareti bir karakter varlığını belirtir.
Yani, XHTML'de bu mümkün değildir :
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
Bu soruna geçici bir çözüm bulmak için, tüm komut dosyasını bir CDATA
bölüme sarabilirsiniz . Bu ayrıştırıcıya şunu söyler: 'Bu bölümde, " <
" ve " &
" işaretlerine kontrol karakteri olarak davranmayın . " JavaScript motorunun " <![CDATA[
" ve " ]]>
" işaretlerini yorumlamasını önlemek için , bunları yorumlara yazabilirsiniz.
Komut dosyanız " <
" veya " &
" içermiyorsa , CDATA
yine de bir bölüme ihtiyacınız yoktur .