2010-07-21 4 views

Antwort

55

Die CDATA Struktur ist nicht wirklich für HTML überhaupt, es ist für XML.

Die Leute verwenden sie manchmal in HTML innerhalb script Tags, weil es die Notwendigkeit für sie, bestimmte Sonderzeichen zu entkommen entfernt. Es ist jedoch keineswegs eine Voraussetzung (für HTML 4 oder 5).

Edit: Hier öffnen wir das wirklich schimmelig alte Dose Würmer aus dem Jahr 2002 über, ob Sie XHTML als text/html oder als application/xhtml+xml sind zu senden, wie Sie „angeblich“ zu :-)

+1

Ich sende HTML (nicht XHTML) und das will ich. Thxs für die Antwort :) –

+0

Kann 'CDATA' innerhalb eines' pre' Tags verwenden, damit ich nicht alle meine spitzen Klammern reparieren muss? – gman

5

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

< [CDATA [...]] > ist ein Schein-Kommentar.

In HTML, <script> bereits geschützt ist - deshalb manchmal muss es als a = "<" + "/script>" geschrieben werden, verwirrend, den Browser zu vermeiden. Beachten Sie, dass der Code außerhalb ein CDATA in HTML gültig ist.

+2

Ich denke, der beste Weg, um das Ende-Tag zu entkommen ist "<\/script>". Ich habe gelesen, dass einige Parser nur nach "" – marcus

+0

@ marcus Sie haben Recht und das ' 'teilt, und ich kenne keinen Mainstream * Browser * wo es nicht funktioniert ... –

14

Das sind Spezifikation scheint dieses Problem zu klären. Skript- und Style-Tags werden als "rohe Textelemente" betrachtet. CDATA wird für sie nicht benötigt oder zugelassen. CDATA wird nur mit "fremden Inhalten" verwendet - d. H. MathML und SVG. Beachten Sie, dass es einige Einschränkungen für das Skript-Tag gibt - im Grunde können Sie nicht so etwas wie var x = '</script>' dort einfügen, weil es das Tag schließt und wie in seiner Antwort angegeben geteilt werden muss. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

22

Aus der gleichen Seite @pst linked to:

Element-specific parsing for script and style tags, Guidance für XHTML-HTML-Kompatibilität: „Der folgende Code mit Entkommen Skript gewährleisten kann und Stilelemente werden sowohl in XHTML und HTML arbeiten, einschließlich älteren Browser. "

Maximale Rückwärtskompatibilität:

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

Einfachere Version, eine Art unvereinbar mit "viel älteren Browsern":

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

So können CDATA in HTML5 verwendet werden, und es wird empfohlen, in die Anleitung für XHTML-HTML-Kompatibilität. Dies ist nützlich für polyglot HTML/XML/XHTML pages, die während der Entwicklung als XML erstellt und analysiert werden, aber als HTML5 für eine bessere browserübergreifende Kompatibilität dienen. Polyglot pages has their benefits, und ich habe das selbst verwendet, da es viel einfacher ist, XML/XHTML5 zu debuggen. Google Chrome zum Beispiel wird einen Fehler für ungültiges XML/XHTML5 (einschließlich zum Beispiel character escaping), während die gleiche Seite als HTML5 "funktioniert einfach" aka "wahrscheinlich funktioniert".

+10

Die Kommentare in einem Skript-Tag werden benötigt, wenn Sie einige 20 Jahre alte Browser unterstützen möchten, also NSCA Mosaic oder Netscape 1 ... –

Verwandte Themen