Diğerleri "nasıl" yanıtını verdiler ve spesifikasyonlardan alıntı yaptılar. İşte <script/>
hata raporları ve posta listelerine birkaç saat geçtikten sonra "neden hayır " ın gerçek hikayesi .
HTML 4
HTML 4, SGML'ye dayanmaktadır .
SGML bazılarına sahiptir shorttags gibi <BR//
, <B>text</>
, <B/text/
, veya <OL<LI>item</LI</OL>
. XML ilk formu alır, sonunu ">" (SGML esnektir) olarak yeniden tanımlar, böylece olur <BR/>
.
Ancak HTML yüzden redfine vermedi <SCRIPT/>
gerektiği anlamına <SCRIPT>>
.
(Evet, '>' içeriğin bir parçası olmalı ve etiket hala kapalı değil .)
Açıkçası, bu XHTML uyumlu değil ve olacak birçok site kırmak (zaman tarayıcılar tarafından yeterli olgun olduğumuzu bakım bu konuda böylece) kimse shorttags uygulanan ve şartname onlara karşı tavsiyede .
Etkili bir şekilde, tüm 'çalışan' kendinden uçlu etiketler, teknik olarak uygun olmayan ayrıştırıcılarda yasaklanmış bitiş etiketine sahip etiketlerdir ve aslında geçersizdir. HTML uyumlu hale getirerek XHTML'ye geçişe yardımcı olmak için bu hack ile gelen W3C idi .
Ve <script>
bitiş etiketi yasaktır .
"Kendiliğinden biten" etiketi HTML 4'teki bir hack'tir ve anlamsızdır.
HTML 5
HTML5'in beş tür etiketi vardır ve yalnızca 'geçersiz' ve 'yabancı' etiketlerin kendi kendine kapanmasına izin verilir .
Çünkü <script>
geçersiz değildir ( içeriği olabilir ) ve yabancı değildir (MathML veya SVG gibi), <script>
nasıl kullandığınızdan bağımsız olarak kendi kendine kapanamaz .
Ama neden? Yabancı olarak kabul edemez, özel bir durum veya başka bir şey yapamazlar mı?
HTML 5 amaçları olması geriye dönük olarak uyumlu olan uygulamaları Bu SGML veya XML dayanmayan HTML 4 ve XHTML 1'in; sözdizimi temel olarak uygulamaların belgelenmesi ve birleştirilmesi ile ilgilidir. (Bu yüzden geçersiz HTML4 olmasına rağmen <br/>
<hr/>
vb. Geçerli HTML 5'tir.)
Kendi kendine kapanma <script>
, uygulamaların farklı olduğu etiketlerden biridir. Bu Chrome, Safari iş için kullanılan , ve Opera ; bence hiçbir zaman Internet Explorer veya Firefox'ta çalışmadı.
Bu, HTML 5 hazırlanırken ve tarayıcı uyumluluğunu bozduğu için reddedildiğinde tartışıldı . Kendiliğinden kapanan komut dosyası etiketinin bulunduğu web sayfaları eski tarayıcılarda (hiç değilse) doğru görüntülenmeyebilir. Başka teklifler de vardı , ancak uyumluluk sorununu da çözemezler.
Taslak yayınlandıktan sonra, WebKit ayrıştırıcıyı uyumlu olacak şekilde güncelledi.
<script>
HTML 4 ve XHTML 1 ile geriye dönük uyumluluk nedeniyle HTML 5'te kendi kendine kapanma gerçekleşmez.
XHTML 1 / XHTML 5
Ne zaman gerçekten XHTML olarak hizmet vermiş <script/>
olduğu gerçekten kapalıdır diğer cevaplar ifade etmişlerdir.
Bunun dışında Spec diyor o gerektiğini HTML olarak görev yaparken çalıştım:
XHTML Belgeleri ... çoğu HTML tarayıcısı ile uyumlu olduğu için "Media / html" [RFC2854] İnternet Ortam Türü ile etiketlenmiş olabilir.
Peki ne oldu?
İnsanlar Mozilla sorulan için Firefox ayrıştırmak izin gibi belgeleri uygun XHTML bakılmaksızın (olarak bilinen Belirtilen içerik başlığının içeriği koklama ). Bu, kendi kendine kapanan komut dosyalarına izin verirdi ve web barındırıcıları doğru başlığı sunmak için yeterince olgun olmadığından içerik koklaması yine de gerekliydi ; IE de iyiydi .
Eğer ilk tarayıcı savaş IE 6 ile bitmiyor, XHTML de listede olmuş olabilir. Ama bitti. IE 6'nın XHTML ile ilgili bir sorunu var. Aslında IE destek vermedi Doğru MIME türü hiç zorlayarak, herkesi kullanmak text/html
IE düzenlenen çünkü XHTML için önemli bir pazar payına bir on yıl boyunca.
Ve ayrıca içerik koklama olabilir gerçekten kötü ve insanların söylediğini kesilmelidir .
Son olarak, W3C'nin XHTML'nin koklanabilir olduğu anlamına gelmediği ortaya çıktı : belge hem HTML hem de XHTML ve Content-Type
kurallar. Biri "sadece bizim spec izleyin" ve pratik olanı görmezden duran sağlam olduğunu söyleyebiliriz . Sonraki XHTML sürümlerinde devam eden bir hata .
Her neyse, bu karar Firefox için konuyu çözdü . Chrome'un doğması 7 yıl önceydi ; başka önemli bir tarayıcı yoktu. Böylece karar verildi.
Yalnızca doküman türünün belirtilmesi, aşağıdaki spesifikasyonlar nedeniyle XML ayrıştırmayı tetiklemez.