HTML
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 Spezifikationen korrekt ist .
Update In HTML5 und mit aktuellen Browsern ist dies nicht mehr der Fall.
In HTML ist dies also nicht möglich:
<script>
var x = '</script>';
alert(x)
</script>
Ein CDATA
Abschnitt hat überhaupt keine Wirkung . Deshalb musst du schreiben
var x = '<' + '/script>'; // or
var x = '<\/script>';
o.ä.
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:
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
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 Sie CDATA
ohnehin keinen Abschnitt.