Andere haben "wie" geantwortet und spec zitiert. Hier ist die wahre Geschichte von "Warum nein <script/>
", nachdem wir uns viele Stunden lang mit Fehlerberichten und Mailinglisten befasst haben.
HTML 4
HTML 4 basiert auf SGML .
SGML hat einige Short , wie <BR//
, <B>text</>
, <B/text/
oder <OL<LI>item</LI</OL>
. XML nimmt die erste Form an und definiert das Ende als ">" neu (SGML ist flexibel), so dass es wird <BR/>
.
HTML wurde jedoch nicht neu definiert, <SCRIPT/>
sollte also bedeuten <SCRIPT>>
.
(Ja, das '>' sollte Teil des Inhalts sein und das Tag ist immer noch nicht geschlossen.)
Offensichtlich ist dies nicht mit XHTML kompatibel und wird viele Websites beschädigen (als die Browser ausgereift genug waren , um sich darum zu kümmern ), sodass niemand Shorttags implementiert hat und die Spezifikation davon abrät .
Tatsächlich sind alle "funktionierenden" selbstendenden Tags Tags mit verbotenem End-Tag auf technisch nicht konformen Parsern und tatsächlich ungültig. Es war W3C, das diesen Hack entwickelte , um den Übergang zu XHTML zu erleichtern, indem es HTML-kompatibel gemacht wurde .
Und <script>
das End-Tag ist nicht verboten .
Das "Self-Ending" -Tag ist ein Hack in HTML 4 und bedeutungslos.
HTML 5
HTML5 hat fünf Arten von Tags und nur "void" - und "fremde" Tags dürfen sich selbst schließen .
Weil <script>
es nicht ungültig ist (es kann Inhalt haben) und nicht fremd ist (wie MathML oder SVG),<script>
kann es nicht selbst geschlossen werden, unabhängig davon, wie Sie es verwenden.
Aber warum? Können sie es nicht als fremd betrachten, Sonderfälle machen oder so?
HTML 5 soll abwärtskompatibel mit Implementierungen von HTML 4 und XHTML 1 sein. Es basiert nicht auf SGML oder XML. Die Syntax befasst sich hauptsächlich mit der Dokumentation und Vereinheitlichung der Implementierungen. (Aus diesem Grund sind <br/>
<hr/>
usw. gültiges HTML 5, obwohl es ungültiges HTML4 ist.)
Selbstschließend <script>
ist eines der Tags, bei denen sich die Implementierungen unterschieden. Es verwendet , um Arbeit in Chrome, Safari , und Opera ; Meines Wissens hat es in Internet Explorer oder Firefox nie funktioniert.
Dies wurde beim Entwurf von HTML 5 besprochen und abgelehnt, da es die Browserkompatibilität beeinträchtigt . Webseiten, deren Skript-Tag sich selbst schließt, werden in alten Browsern möglicherweise nicht richtig (wenn überhaupt) gerendert. Es gab andere Vorschläge , aber sie können das Kompatibilitätsproblem auch nicht lösen.
Nach der Veröffentlichung des Entwurfs hat WebKit den Parser so aktualisiert, dass er den Anforderungen entspricht.
Selbstschließend <script>
tritt in HTML 5 aufgrund der Abwärtskompatibilität mit HTML 4 und XHTML 1 nicht auf.
XHTML 1 / XHTML 5
Wenn wirklich als XHTML gedient, <script/>
ist es wirklich geschlossen, wie andere Antworten angegeben haben.
Außer , dass die Spezifikation sagt es sollte gearbeitet haben , wenn sie als HTML serviert:
XHTML-Dokumente ... können mit dem Internet-Medientyp "text / html" [RFC2854] gekennzeichnet sein, da sie mit den meisten HTML-Browsern kompatibel sind.
Also was ist passiert?
Die Leute baten Mozilla , Firefox konforme Dokumente als XHTML analysieren zu lassen, unabhängig vom angegebenen Inhaltsheader (bekannt als Content Sniffing ). Dies hätte selbstschließende Skripte ermöglicht, und das Sniffing von Inhalten war ohnehin notwendig, da Webhoster nicht ausgereift genug waren, um den richtigen Header bereitzustellen. IE war gut darin .
Wenn der erste Browserkrieg nicht mit IE 6 endete, war möglicherweise auch XHTML auf der Liste. Aber es endete. Und IE 6 hat ein Problem mit XHTML. In der Tat IE unterstützt nicht den richtigen MIME - Typ überhaupt , zwingt alle zu verwenden , text/html
für XHTML , weil IE gehalten großen Marktanteil für ein ganzes Jahrzehnt.
Und auch das Schnüffeln von Inhalten kann sehr schlecht sein und die Leute sagen, es sollte gestoppt werden .
Schließlich stellt sich heraus, dass das W3C nicht bedeutete, dass XHTML schnüffelbar ist : Das Dokument ist sowohl HTML als auch XHTML und Content-Type
Regeln. Man kann sagen, dass sie fest auf "einfach unserer Spezifikation folgen" standen und ignorierten, was praktisch war . Ein Fehler, der in späteren XHTML-Versionen fortgesetzt wurde .
Wie auch immer, diese Entscheidung hat die Angelegenheit für Firefox geregelt . Es dauerte 7 Jahre, bis Chrome geboren wurde . Es gab keinen anderen wichtigen Browser. So wurde entschieden.
Die Angabe des Doctype allein löst aufgrund der folgenden Spezifikationen keine XML-Analyse aus.