Wann ist ein notwendiger Abschnitt CDATA in einem Script-Tag?
-
09-06-2019 - |
Frage
Sind CDATA-Tags immer notwendig in Script-Tags und wenn ja, wann?
Mit anderen Worten, wann und wo ist dies:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
vorzuziehen folgt aus:
<script type="text/javascript">
...code...
</script>
Lösung
Ein CDATA-Abschnitt ist erforderlich, wenn Sie benötigen, um Ihr Dokument als XML zu analysieren (zB wenn eine XHTML-Seite wird als XML interpretiert) und Sie wollen in der Lage seine wörtlichen i<10
und a && b
zu schreiben statt i<10
und a && b
, wie XHTML wird den JavaScript-Code als geparste Zeichendaten analysieren als Zeichendaten standardmäßig gegenüber. Dies ist nicht ein Problem mit Skripten, die in externen Dateien gespeichert sind, sondern für jede Inline JavaScript in XHTML Sie wahrscheinlich wollen einen CDATA-Abschnitt verwenden.
Beachten Sie, dass viele XHTML-Seiten wurden nie als XML analysiert werden soll, in dem Fall wird dieser ein Problem nicht sein.
Für eine gute Zuschreibung zu diesem Thema finden Sie unter https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
Andere Tipps
Wenn Browser behandelt das Markup als XML:
<script>
<![CDATA[
...code...
]]>
</script>
Wenn Browser behandelt das Markup als HTML:
<script>
...code...
</script>
Wenn Browser das Markup als HTML behandeln und Sie möchten Ihre XHTML 1.0 Markup (zum Beispiel) zu validieren.
<script>
//<![CDATA[
...code...
//]]>
</script>
HTML
Ein HTML-Parser wird alles zwischen Im Grunde ist es zu ermöglichen, ein Dokument zu schreiben, die sowohl XHTML und HTML ist. Das Problem ist, dass innerhalb von XHTML, wird der XML-Parser der & interpretieren <,> Zeichen im Skript -Tag und XML-Parsing-Fehler verursachen. So können Sie Ihren JavaScript mit Einheiten schreiben, z. Das ist aber nicht praktikabel. Das größere Problem ist, dass, wenn Sie die Seite in HTML, den Tag Skript lesen wird als CDATA ‚standardmäßig‘, und solche JavaScript wird nicht ausgeführt. Deshalb, wenn Sie die gleiche Seite OK sein wollen beide mit XHTML und HTML-Parser, müssen Sie die Skript -Tag in CDATA Elemente in XHTML umschließen, aber nicht schließen Sie es in HTML. Dieser Trick markiert den Beginn eines CDATA-Element als JavaScript-Kommentar; in HTML ignoriert der JavaScript-Parser den CDATA-Tag (es ist ein Kommentar). In XHTML, der XML-Parser (die vor dem JavaScript ausgeführt wird) erkennt es und behandelt den Rest bis zum Ende des CDATA als CDATA. <script>
und </script>
als Teil des Skripts behandeln. Einige Implementierungen brauchen nicht einmal einen richtigen schließenden Tag; sie halten an "</
" Skript Interpretation, die die
if (a > b) alert('hello world');
Es ist eine X (HT) ML Sache. Wenn Sie Symbole wie <
und >
im JavaScript, z.B. zwei ganze Zahlen für den Vergleich, hätte dies wie XML analysiert werden, so würden sie als Anfang oder das Ende eines Tags markieren.
Die CDATA bedeuten, dass die folgenden Zeilen (alles bis zu dem ]]>
nicht XML ist und somit nicht auf diese Weise analysiert werden soll.
Do nicht verwenden CDATA in HTML4 aber Sie sollte verwenden CDATA in XHTML und müssen verwenden CDATA in XML, wenn Sie wie unescaped Symbole < und>.
Es dass XHTML-Validierung, um sicherzustellen, funktioniert einwandfrei, wenn Sie JavaScript in Ihrer Seite eingebettet haben, anstatt extern verwiesen wird.
XHTML erfordert, dass Ihre Seite strikt an XML-Markup Anforderungen entsprechen. Da JavaScript Zeichen mit besonderer Bedeutung enthalten kann, müssen Sie es in CDATA wickeln, dass die Validierung, um sicherzustellen, nicht Flagge als fehlerhaft.
Mit HTML-Seiten im Web Sie können die erforderliche JavaScript zwischen und Tags enthalten. Wenn Sie den HTML-Code auf Ihrer Webseite der JavaScript-Inhalte zu validieren wird als CDATA (Zeichendaten) sein, die daher von dem Validator ignoriert. Das gleiche gilt nicht, wenn Sie die neueren XHTML-Standards bei der Einrichtung Ihrer Webseite folgen. Mit XHTML wird der Code zwischen dem Script-Tags als PCDATA (analysierte Zeichendaten) sein, die deshalb vom Prüfer verarbeitet wird.
Aus diesem Grund können Sie nicht nur JavaScript zwischen den Script-Tags auf Ihrer Seite sind ohne ‚brechen‘ Ihrer Webseite (zumindest so weit wie der Validator betroffen ist).
Sie können lernen mehr über CDATA hier und mehr über XHTML hier .
CDATA gibt an, dass der Inhalt innerhalb von nicht XML.
Hier ist eine Erklärung auf wikipedia
Wenn Sie sich für strenge XHTML Compliance werden, müssen Sie die CDATA so weniger als und Et-Zeichen werden nicht als ungültige Zeichen gekennzeichnet.
, um XML-Fehler bei XHTML-Validierung zu vermeiden.
CDATA sagt den Browser, um den Text anzuzeigen, wie und nicht als HTML zu machen.
CDATA gibt an, dass der Inhalt innerhalb von nicht XML.
CDATA ist notwendig, in jedem XML-Dialekt, da Text in einem XML-Knoten als untergeordnetes Element behandelt wird, bevor sie als JavaScript ausgewertet. Dies ist auch der Grund, warum JSLint beschwert über die <
Zeichen in regulären Ausdrücken.
Referenzen
Wenn Sie wollen, dass es zu validieren (in XML / XHTML - danke, < a href = "https://stackoverflow.com/users/6436/loren-segal"> Loren Segal ).
Auf diese Weise älterer Browser analysiert nicht den Javascript-Code und die Seite nicht bricht.
Abwärtskompatibilität. Muss ich liebe es.