Andere haben auf das "Wie" geantwortet und die Spezifikationen zitiert. Hier ist die eigentliche Geschichte des "Warum nicht <script/>
", nachdem ich viele Stunden in Fehlerberichten und Mailinglisten gegraben habe.
HTML 4
HTML 4 basiert auf SGML .
SGML hat einige shorttags , wie zum Beispiel <BR//
, <B>text</>
, <B/text/
o <OL<LI>item</LI</OL>
. XML nimmt die erste Form, definiert die Endung als ">" um (SGML ist flexibel), so dass sie zu <BR/>
.
HTML hat jedoch nicht rot gefärbt, so dass <SCRIPT/>
sollte mittlere <SCRIPT>>
.
(Ja, das '>' sollte Teil des Inhalts sein, und das Tag ist immer noch no geschlossen).
Offensichtlich ist dies nicht mit XHTML kompatibel und 意志 viele Websites zu zerstören (zu der Zeit, als die Browser ausgereift genug waren zur Pflege über diese ), also niemand hat Kurztags implementiert und die Spezifikation rät von ihnen ab .
Im Grunde genommen sind alle "funktionierenden" Tags mit eigenem Ende Tags mit verbotenem Ende auf technisch nicht konformen Parsern und damit faktisch ungültig. Es war das W3C, das hat sich diesen Hack ausgedacht um den Übergang zu XHTML zu erleichtern, indem es HTML-kompatibel .
Und <script>
Die Endmarkierung von nicht verboten .
Der "Self-ending"-Tag ist ein Hack in HTML 4 und ist bedeutungslos.
HTML 5
HTML5 hat fünf Arten von Schildern und nur die Tags "ungültig" und "fremd" sind selbstschließend sein dürfen .
Denn <script>
ist nicht nichtig (es Mai Inhalt haben) und nicht fremd ist (wie MathML oder SVG), <script>
kann nicht selbst geschlossen werden, unabhängig davon, wie Sie es verwenden.
Aber warum? Können sie es nicht als fremd betrachten, als Sonderfall, oder so?
HTML 5 soll sein Abwärtskompatibel con Implementierungen von HTML 4 und XHTML 1. Es basiert nicht auf SGML oder XML; seine Syntax dient hauptsächlich der Dokumentation und Vereinheitlichung der Implementierungen. (Aus diesem Grund <br/>
<hr/>
usw. sind gültiges HTML 5 obwohl es sich um ungültiges HTML4 handelt).
Selbstschließende <script>
ist einer der Tags, bei denen es früher unterschiedliche Implementierungen gab. Es funktionierte früher in Chrome, Safari , und Oper Meines Wissens hat es im Internet Explorer oder Firefox nie funktioniert.
Dies wurde diskutiert als HTML 5 entworfen wurde und abgelehnt wurde, weil es bricht Browser Kompatibilität . Webseiten, die das Skript-Tag selbst schließen, werden in alten Browsern möglicherweise nicht korrekt (oder gar nicht) dargestellt. Es gab andere Vorschläge aber auch sie können das Kompatibilitätsproblem nicht lösen.
Nach der Veröffentlichung des Entwurfs aktualisierte WebKit den Parser, um die Konformität zu gewährleisten.
Selbstschließende <script>
findet in HTML 5 wegen der Abwärtskompatibilität zu HTML 4 und XHTML 1 nicht statt.
XHTML 1 / XHTML 5
Wenn realmente als XHTML serviert, <script/>
wirklich geschlossen ist, da andere Antworten haben erklärt.
Außer, dass die Spezifikation sagt es sollte funktioniert haben, wenn sie als HTML serviert wurden:
XHTML-Dokumente ... können mit dem Internet Media Type "text/html" [RFC2854] gekennzeichnet werden, da sie mit den meisten HTML-Browsern kompatibel sind.
Was ist also passiert?
Menschen fragte Mozilla à Firefox parsen lassen konforme Dokumente als XHTML unabhängig vom angegebenen Inhaltskopf (bekannt als Content-Sniffing ). Dies hätte selbstschließende Skripte und Content Sniffing ermöglicht notwendig war weil die Webhoster nicht ausgereift genug waren, um den korrekten Header zu liefern; der IE war gut darin .
Wenn die erster Browser-Krieg nicht mit IE 6 endet, könnte auch XHTML auf der Liste gestanden haben. Aber es hat aufgehört. Und IE 6 hat ein Problem mit XHTML. In der Tat IE hat nicht unterstützt den richtigen MIME-Typ überhaupt erzwingen alle zu verwenden text/html
für XHTML, weil der IE die großer Marktanteil ein ganzes Jahrzehnt lang.
Und auch Content Sniffing kann sein wirklich schlecht und die Leute sagen es sollte gestoppt werden .
Schließlich stellt sich heraus, dass das W3C wollte nicht, dass XHTML ausspähbar ist : das Dokument ist beide HTML und XHTML, und Content-Type
Regeln. Man kann sagen, dass sie sich an unsere Vorgaben gehalten haben und das Praktische zu ignorieren . Ein Fehler, der Fortsetzung in spätere XHTML-Versionen.
Wie auch immer, diese Entscheidung die Angelegenheit geregelt für Firefox. Es war 7 Jahre vor Chrome wurde geboren Es gab keine anderen signifikanten Browser. So wurde es beschlossen.
Die Angabe des Doctype allein löst aufgrund der folgenden Spezifikationen kein XML-Parsing aus.
0 Stimmen
Ich nehme an, dass Sie über richtiges XHTML sprechen? In einigen Kommentaren ist immer noch von XHTML die Rede.
16 Stimmen
Funktioniert in Chrome und Opera
0 Stimmen
Siehe auch diese Frage: stackoverflow.com/questions/348736/
57 Stimmen
In einer neueren Version von Chrome scheint dies nicht mehr zu funktionieren, selbstschließende Skript-Tags funktionieren nicht mehr in Chrome
14 Stimmen
Es geht nicht nur um Skript-Tags. Ich glaube auch nicht, dass selbstschließende div-Tags funktionieren.
8 Stimmen
Seit Juli 2011 besteht dieses Problem auch bei Chrome und Firefox. "Das ist kein Fehler, sondern eine Funktion" - wirklich ärgerlich.
0 Stimmen
XHTML5 selbstschließende Tags
0 Stimmen
Ich verwende selbstschließende Tags nur für Bilder oder Eingaben, weil ich weiß, dass der Rest in manchen Browsern nicht unterstützt wird.
4 Stimmen
Die allgemeinere Version dieser Frage wurde zwei Tage später gestellt: stackoverflow.com/questions/97522/
0 Stimmen
Außerdem wird in einigen Versionen von Chrome (zumindest in meiner, derzeit 34.0.1847.116) nicht nur das Skript im selbstschließenden Tag nicht geladen, sondern es kann auch Skriptknoten unterbrechen, die in entfernten Dokumentpositionen definiert sind (z. B.
<script>
s in<body>
auch wenn die selbstgeschlossene<script>
war in<head>
)0 Stimmen
Siehe auch: Eine detaillierte Aufschlüsselung des <script>-Tags
0 Stimmen
Diese Frage wurde 2008 gestellt und verwirrt die Leute bis heute, mich eingeschlossen.
1 Stimmen
Ich denke, hinter dieser Frage steht die Annahme, dass XHTML nur eine wohlgeformte Untermenge von HTML ist. Aber in Wirklichkeit ist die Verwendung von XML
<foo />
für selbstschließende Anhänger gibt es in HTML eigentlich nicht . Das Verhalten von Tags ist in der HTML-Spezifikation festgelegt. Webbrowser wissen bereits, dass z. B.<img>
und<br>
selbstschließend und<div>
y<script>
nicht, so dass sie sich nicht auf das Vorhandensein oder Fehlen von/
.2 Stimmen
Moderne Referenz - Unternehmen und Menschen machen mit, um all dies an einem Ort zu dokumentieren, und auch Microsoft hat dies als künftige Referenz bestätigt. developer.mozilla.org/de-US/docs/Web/HTML/Element/script