2010-07-21 18 views

risposta

55

La struttura CDATA non è affatto per HTML, è per XML.

A volte le persone li utilizzano in HTML all'interno dei tag script perché rimuovono la necessità che escano determinati caratteri speciali. Tuttavia non è un requisito (per HTML 4 o 5).

Edit: Questo è dove abbiamo aperto che in realtà ammuffito vecchio vaso di Pandora dal 2002 oltre se si sta inviando XHTML come text/html o come application/xhtml+xml come se fossi “presunto” per :-)

+1

Sto inviando HTML (non XHTML) e lo voglio. Thxs per la risposta :) –

+0

Posso usare 'CDATA' all'interno di un tag' pre' quindi non devo correggere tutte le parentesi angolari? – gman

5

Forse si veda: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

< [CDATA [...]] > è un commento fasullo.

In HTML, <script> è già protetto - questo è il motivo per cui a volte si deve essere scritto come a = "<" + "/script>", per evitare di confondere il browser. Si noti che il codice è valido all'esterno di un CDATA in HTML.

+2

Penso che il modo migliore per sfuggire al tag di chiusura sia "<\/script>". Ho letto che alcuni parser controllano solo "" – marcus

+0

@marcus Sei corretto e che ' ', e non conosco un browser * mainstream * in cui non funziona ... –

14

Il le specifiche sembrano chiarire questo problema. i tag script e di stile sono considerati "elementi di testo non elaborati". CDATA non è necessario o consentito per loro. CDATA viene utilizzato solo con "contenuto estraneo", ad esempio MathML e SVG. Nota che ci sono alcune restrizioni su cosa può andare nel tag dello script - in pratica non puoi inserire qualcosa come var x = '</script>' perché questo chiuderà il tag e dovrà essere diviso come prima nella sua risposta. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

22

Dalla stessa pagina @pst linked to:

Element-specific parsing for script and style tags, Guida per XHTML-HTML compatibilità: "Il seguente codice con fuga in grado di garantire sceneggiatura e elementi di stile funzionerà sia in XHTML e HTML, tra cui anziani i browser."

all'indietro la massima compatibilità:

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

Più semplice versione, una sorta di incompatibile con "i browser molto vecchi":

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

Quindi, CDATA può essere utilizzato in HTML5, e si consiglia di la guida per compatibilità XHTML-HTML. Questo utile per polyglot HTML/XML/XHTML pages, che vengono creati e analizzati come XML durante lo sviluppo, ma pubblicati come HTML5 per una migliore compatibilità cross-browser. Polyglot pages has their benefits e l'ho usato io stesso, poiché è molto più facile eseguire il debug di XML/XHTML5. Google Chrome, ad esempio, genererà un errore per XML/XHTML5 non valido (incluso ad esempio character escaping), mentre la stessa pagina pubblicata come HTML5 "funzionerà", ovvero "probabilmente funzionerà".

+10

i commenti all'interno di un tag script sono necessari se vuoi supportare alcuni browser di 20 anni, ovvero NSCA Mosaic o Netscape 1 ... –