Sind CDATA- Tags in Skript-Tags jemals erforderlich und wenn ja, wann?
Mit anderen Worten, wann und wo ist das:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
dem vorzuziehen:
<script type="text/javascript">
...code...
</script>
javascript
html
xhtml
cdata
Brad
quelle
quelle
Antworten:
Ein CDATA-Abschnitt ist erforderlich, wenn Ihr Dokument als XML analysiert werden soll (z. B. wenn eine XHTML-Seite als XML interpretiert wird) und Sie in der Lage sein möchten, Literal
i<10
unda && b
anstelle voni<10
und zu schreibena && b
, da XHTML den JavaScript-Code als analysierte Zeichendaten analysiert im Gegensatz zu Zeichendaten standardmäßig. Dies ist kein Problem bei Skripten, die in externen Quelldateien gespeichert sind. Für Inline-JavaScript in XHTML sollten Sie jedoch wahrscheinlich einen CDATA-Abschnitt verwenden.Beachten Sie, dass viele XHTML-Seiten niemals als XML analysiert werden sollten. In diesem Fall ist dies kein Problem.
Eine gute Beschreibung zu diesem Thema finden Sie unter https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
quelle
&
und<
Zeichen, müssen Sie nicht einen CDATA - Abschnitt; Es wird sowohl in HTML als auch in XHTML gut funktionieren. Sie können dies leicht erreichen, indem Sie den gesamten wichtigen Code in externe Skripte einfügen und nur Inline-Skripte verwenden, um z. Initialisieren Sie Variablen ( bei Bedarf Escape&
/<
to\x26
/\x3C
in String-Literalen).Wenn Browser das Markup als XML behandeln:
Wenn Browser das Markup als HTML behandeln:
Wenn Browser das Markup als HTML behandeln und Sie möchten, dass Ihr XHTML 1.0-Markup (zum Beispiel) überprüft wird.
quelle
/* ... */
da sonst der CodeHTML
Ein HTML-Parser behandelt alles zwischen
<script>
und</script>
als Teil des Skripts.Einige Implementierungen benötigen nicht einmal ein korrektes schließendes Tag. Sie stoppen die Skriptinterpretation bei "</
", was gemäß den Spezifikationenkorrekt ist.In HTML ist dies also nicht möglich:
Ein
CDATA
Abschnitt hat überhaupt keine Wirkung . Deshalb musst du schreibeno.ä.
Dies gilt auch für XHTML-Dateien, die als
text/html
. (Da der IE keine XML-Inhaltstypen unterstützt, ist dies meistens der Fall.)XML
In XML gelten unterschiedliche Regeln. Beachten Sie, dass (Nicht-IE-) Browser einen XML-Parser nur verwenden, wenn das XHMTL-Dokument mit einem XML-Inhaltstyp bereitgestellt wird.
Für den XML-Parser ist ein
script
Tag nicht besser als jedes andere Tag. Insbesondere kann ein Skriptknoten untergeordnete Nicht-Textknoten enthalten, die durch "<
" ausgelöst werden . und ein "&
" Zeichen bezeichnet eine Zeichenentität.In XHTML ist dies also nicht möglich:
Um dies zu umgehen, können Sie das gesamte Skript in einen
CDATA
Abschnitt einschließen. Dies teilt dem Parser mit: 'Behandeln Sie in diesem Abschnitt "<
" und "&
" nicht als Steuerzeichen .' Um zu verhindern, dass die JavaScript-Engine die Markierungen "<![CDATA[
" und "]]>
" interpretiert , können Sie sie in Kommentare einschließen.Wenn Ihr Skript kein "
<
" oder "&
" enthält, benötigen SieCDATA
ohnehin keinen Abschnitt.quelle
</
Inside-Script-Tags schlecht sind.<script>var b = "<b>bold</b>";</script>
nicht validiert werden, aber nachdem ich Ihre Antwort gelesen und geändert habe, um<script>var b = "<b>bold<\/b>";</script>
sie zu beheben .Grundsätzlich ist es möglich, ein Dokument zu schreiben, das sowohl XHTML als auch HTML ist. Das Problem ist, dass der XML-Parser in XHTML die Zeichen &, <,> im Skript- Tag interpretiert und einen XML-Analysefehler verursacht. Sie können Ihr JavaScript also mit Entitäten schreiben, z.
Das ist aber unpraktisch. Das größere Problem ist, dass beim Lesen der Seite in HTML das Tag- Skript standardmäßig als CDATA betrachtet wird und ein solches JavaScript nicht ausgeführt wird. Wenn Sie möchten, dass dieselbe Seite sowohl mit XHTML- als auch mit HTML-Parsern in Ordnung ist, müssen Sie das Skript- Tag in das CDATA-Element in XHTML einschließen, NICHT jedoch in HTML.
Dieser Trick markiert den Beginn eines CDATA-Elements als JavaScript-Kommentar. In HTML ignoriert der JavaScript-Parser das CDATA-Tag (es ist ein Kommentar). In XHTML erkennt der XML-Parser (der vor dem JavaScript ausgeführt wird) dies und behandelt den Rest bis zum Ende von CDATA als CDATA.
quelle
Es ist eine X (HT) ML-Sache. Wenn Sie Symbole wie
<
und>
innerhalb von JavaScript verwenden, z. B. zum Vergleichen von zwei Ganzzahlen, muss dies wie XML analysiert werden, sodass sie als Anfang oder Ende eines Tags markiert werden.Die CDATA bedeutet, dass die folgenden Zeilen (alles bis zum
]]>
ist nicht XML und sollten daher nicht auf diese Weise analysiert werden.quelle
Sie nicht verwenden CDATA in HTML4 , aber Sie sollten CDATA in XHTML verwenden und müssen CDATA in XML verwenden , wenn Sie unescaped Symbole wie <und> haben.
quelle
Damit wird sichergestellt, dass die XHTML-Validierung ordnungsgemäß funktioniert, wenn JavaScript in Ihre Seite eingebettet ist und nicht extern referenziert wird.
Für XHTML muss Ihre Seite den XML-Markup-Anforderungen genau entsprechen. Da JavaScript möglicherweise Zeichen mit besonderer Bedeutung enthält, müssen Sie es in CDATA einschließen, um sicherzustellen, dass die Validierung es nicht als fehlerhaft kennzeichnet.
Sie können lernen , hier mehr über CDATA und mehr über XHTML hier .
quelle
CDATA gibt an, dass der Inhalt nicht XML ist.
Hier ist eine Erklärung auf Wikipedia
quelle
Wenn Sie eine strikte XHTML-Konformität anstreben, benötigen Sie die CDATA, sodass weniger als und kaufmännisches Und nicht als ungültige Zeichen gekennzeichnet sind.
quelle
um XML-Fehler während der XML-Validierung zu vermeiden.
quelle
CDATA weist den Browser an, den Text unverändert anzuzeigen und nicht als HTML zu rendern.
quelle
CDATA gibt an, dass der Inhalt nicht XML ist.
quelle
CDATA ist in jedem XML-Dialekt erforderlich, da Text innerhalb eines XML-Knotens als untergeordnetes Element behandelt wird, bevor er als JavaScript ausgewertet wird. Dies ist auch der Grund, warum sich JSLint über das
<
Zeichen in regulären Ausdrücken beschwert.Verweise
quelle
Wenn Sie möchten, dass es validiert wird (in XML / XHTML - danke, Loren Segal ).
quelle
Auf diese Weise analysieren ältere Browser den Javascript-Code nicht und die Seite wird nicht beschädigt.
Abwärtskompatibilität. Ich muss es lieben.
quelle