Qual è l'uso di CDATA all'interno di tag JavaScript e HTML?Che cos'è il CDATA in HTML?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
Qual è l'uso di CDATA all'interno di tag JavaScript e HTML?Che cos'è il CDATA in HTML?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
Tutto il testo in un documento XML verrà analizzato dal parser.
Ma il testo all'interno di una sezione CDATA verrà ignorato dal parser.
CDATA - (non analizzate) Character dati
Il termine CDATA viene utilizzata per i dati di testo che non deve essere analizzato dal parser XML.
Caratteri come "<" e "&" non sono consentiti negli elementi XML.
"<" genererà un errore perché il parser lo interpreta come l'inizio di un nuovo elemento.
"&" genererà un errore perché il parser lo interpreta come l'inizio di un'entità carattere.
Alcuni testi, come il codice JavaScript, contengono molti caratteri "<" o "&". Per evitare errori, il codice di script può essere definito come CDATA.
Tutto il contenuto di una sezione CDATA viene ignorato dal parser.
sezioneUn CDATA inizia con "
<![CDATA[
" e termina con "]]>
"
uso di CDATA nell'output programma
sezioni CDATA nei documenti XHTML sono suscettibili di essere letti in modo diverso da browser Web se eseguono il rendering del documento come HTML, poiché i parser HTML non riconoscono i marcatori di inizio e fine CDATA, né riconoscono i riferimenti di entità HTML come
<
all'interno dei tag<script>
.Ciò può causare problemi di rendering nei browser Web e può portare a vulnerabilità di scripting cross-site se utilizzato per visualizzare dati da fonti non attendibili, poiché i due tipi di parser non saranno d'accordo su dove finisce la sezione CDATA.
Vedere anche Wikipedia entry on CDATA.
CDATA
non ha alcun significato in HTML.
CDATA
è un costrutto XML che imposta il contenuto di un tag che è normalmente #PCDATA - dati di carattere analizzati, da prendere invece come #CDATA, cioè dati di caratteri non analizzati. È pertinente e valido solo in XHTML.
Viene utilizzato nei tag script
per evitare l'analisi <
e &
. In HTML, questo non è necessario, perché in HTML, script
è già #CDATA.
così, y fa la gente lo usa all'interno Javascript tag? dove ha qualche significato e per cosa, grazie – SexyMF
@SexyMF Probabilmente perché queste persone digitano i documenti XHTML invece di SGML/HTML e/o vogliono aiutare meno browser conformi agli standard a caricare correttamente le loro pagine indipendentemente. – amn
Anche se ha quasi 6 anni, questa è ancora la migliore spiegazione di 'CDATA' che ho visto. – freginold
CDATA è una sequenza di caratteri del set di caratteri del documento e può includere entità di carattere. I programmi utente dovrebbero interpretare i valori degli attributi come segue: Sostituire entità carattere con i caratteri,
Ignora avanzamenti di riga,
Sostituire ogni ritorno a capo o una scheda con un singolo spazio.
Da http://en.wikipedia.org/wiki/CDATA:
Dal momento che è utile essere in grado di utilizzare meno-che segni (<) e commerciali (&) negli script di pagine web, e in misura minore gli stili misura, senza dover per ricordarsi di sfuggirle, è normale usare i marcatori CDATA attorno al testo di inline e gli elementi nei documenti XHTML . Ma in modo che il documento può anche essere analizzato da HTML parser, che non riconoscono i marcatori CDATA, i marcatori CDATA di solito sono commentate-out, come in questo esempio JavaScript:
<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
CDATA è Obsoleto.
Quindi non ne fanno uso in HTML 5.
https://developer.mozilla.org/en-US/docs/Web/API/CDATASection
Sono confuso su cosa sta cambiando. 1) I dati dei caratteri esistono ancora in DOM4? https://www.w3.org/TR/dom/#interface-characterdata 2) Eppure il CDATASection viene rimosso? https://www.w3.org/TR/dom/#dom-core Quale sarà l'alternativa? Codifica obbligatoria o tutti '<' e '&' e inseriti in qualche altro tag? Che ne dici di sostenere i vecchi documenti? I browser improvvisamente elimineranno il supporto CDATA? Quindi non possiamo elaborare documenti creati da altri sui quali non abbiamo alcun controllo? O semplicemente ricorrere al manipolare manualmente le stringhe? – user314159
Basta sfuggire ai caratteri speciali. –
Per la creazione di XML, capisco, è sufficiente sfuggire ai caratteri. Tuttavia, la mia preoccupazione è come elaborare le sezioni CDATA (ad esempio dai feed che non possiamo controllare e potrebbe essere lento ad aggiornare il loro formato), dopo che i browser hanno rimosso CDATASection dal DOM? Quando cadranno? FF 49 continua a mostrarmi CDATASection nel DOM. Non è chiaro per me come gestire in questo caso durante il tempo di transizione dopo che è stato reso obsoleto e rimosso dal browser. Sarà visto come un nodo di testo? Un errore (tag errato)? Sto solo cercando di evitare la bruttezza di trovare manualmente i marcatori nel testo per estrarre i dati all'interno. – user314159
Un modo per scrivere un sottoinsieme comune di HTML e XHTML, nella speranza di una maggiore portabilità.
In HTML, <script>
è la magia che sfugge a tutto finché non viene visualizzato </script>
.
Così si può scrivere:
<script>x = '<br/>';
e <br/>
non sarà considerato un tag.
Questo è il motivo per cui le stringhe come ad esempio:
x = '</scripts>'
devono essere sfuggito come:
x = '</scr' + 'pts>'
See: Why split the <script> tag when writing it with document.write()?
Ma XML (e quindi XHTML, che è un "sottoinsieme" di XML, unlike HTML), non ha quella magia: <br/>
sarebbe visto come un tag.
<![CDATA[
è il modo XHTML per dire:
non analizzano nessun tag fino al prossimo
]]>
, considerare tutto una stringa
Il //
viene aggiunto per rendere bene il lavoro CDATA anche in HTML.
In HTML <![CDATA[
non è magico, quindi sarebbe gestito da JavaScript. Quindi //
è usato per commentare.
L'XHTML vede anche l'//
, ma osserverà come una riga di commento vuoto che non è un problema:
//
che diceva:
<!DOCTYPE html>
vs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
script
sintassiMa che viola la regola d'oro di Internet:
non si fidano di terzi, o il vostro prodotto si romperà
Penso di avere una domanda migliore allora. A grandi linee, quali vantaggi si associano all'uso del tag CDATA? – ajameswolf