Soll ich <! [CDATA […]]> in HTML5 verwenden?

79

Ich bin mir ziemlich sicher, dass <![CDATA[...]]>Abschnitte in XHTML5 verwendet werden können, aber was ist mit HTML5?

Darryl Hein
quelle

Antworten:

56

Die CDATAStruktur ist überhaupt nicht wirklich für HTML, sondern für XML.

Menschen verwenden sie manchmal in HTML in scriptTags, da sie bestimmte Sonderzeichen nicht mehr umgehen müssen. Dies ist jedoch keineswegs erforderlich (entweder für HTML 4 oder 5).

Edit: Dies ist , wo wir das wirklich schimmelig alte Dose Würmer öffnen von 2002 darüber , ob Sie senden XHTML als text/htmloder als application/xhtml+xmlwie du bist „angeblich“ zu :-)

Hollsk
quelle
1
Ich sende HTML (nicht XHTML) und ich möchte das. Danke für die Antwort :)
Darryl Hein
Kann CDATAinnerhalb eines preTags verwendet werden, damit ich nicht alle meine spitzen Klammern reparieren muss?
Gman
1
Ungenau. CDATA ist sowohl für SGML als auch für die XML-Teilmenge. Es ist also sowohl für HTML als auch für XHTML.
Johan Boulé
24

Von derselben Seite @pst verlinkt mit :

Elementspezifisches Parsen für scriptund styleTags , Anleitung zur XHTML-HTML-Kompatibilität : "Der folgende Code mit Escapezeichen kann sicherstellen, dass Skript- und Stilelemente sowohl in XHTML als auch in HTML funktionieren, einschließlich älterer Browser."

Maximale Abwärtskompatibilität:

<script type="text/javascript"><!--//--><![CDATA[//><!--
    ...
//--><!]]></script>

Einfachere Version, irgendwie inkompatibel mit "viel älteren Browsern":

<script>//<![CDATA[
   ...
//]]></script>

So CDATAkann in HTML5 verwendet werden, und es ist in der empfohlenen Guidance für XHTML-HTML - Kompatibilität . Dies ist nützlich für mehrsprachige HTML / XML / XHTML-Seiten , die während der Entwicklung als XML erstellt und analysiert werden, aber für eine bessere browserübergreifende Kompatibilität als HTML5 dienen. Polyglot-Seiten haben ihre Vorteile , und ich habe sie selbst verwendet, da das Debuggen von XML / XHTML5 viel einfacher ist. Google Chrome zum Beispiel einen Fehler für ungültige XML / XHTML5 (einschließlich zum Beispiel werfen Charakter zu entkommen ), während die gleiche Seite diente als HTML5 wird „nur Arbeit“ aka „wahrscheinlich Arbeit“.

Joel Purra
quelle
12
Die Kommentare in einem Skript-Tag werden benötigt, wenn Sie einige 20 Jahre alte Browser unterstützen möchten, dh NSCA Mosaic oder Netscape 1 ...
Antti Haapala
15

Die Spezifikation scheint dieses Problem zu klären. Skript- und Stil-Tags gelten als "Rohtextelemente". CDATA wird für sie nicht benötigt oder erlaubt. CDATA wird nur mit "fremden Inhalten" verwendet - dh MathML und SVG. Beachten Sie, dass das Skript-Tag einige Einschränkungen aufweist. Grundsätzlich können Sie so etwas nicht var x = '</script>'einfügen, da es das Tag schließt und wie in seiner Antwort angegeben pst aufgeteilt werden muss. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

rmarscher
quelle
5

Vielleicht sehen Sie: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

<! [CDATA [...]]> ist ein falscher Kommentar.

Ist in HTML <script>bereits geschützt - deshalb muss es manchmal so geschrieben werden a = "<" + "/script>", um den Browser nicht zu verwirren. Beachten Sie, dass der Code außerhalb einer CDATA in HTML gültig ist .


quelle
2
Ich denke, der beste Weg, um dem End-Tag zu entkommen, ist "<\ / script>". Ich habe gelesen, dass einige Parser nur nach "</"
suchen
@marcus Du bist richtig und das </ist das einzige spezielle Token in diesem Zusammenhang. Meine neueren Antworten zu diesem Thema stimmen überein, da ich mein Wissen im Laufe der Zeit aktualisiert habe ;-) Ich werde dies aktualisieren. </script>