</script>
a être brisé parce que sinon ce serait la fin de l'enfermant <script></script>
bloc trop tôt. Vraiment, il devrait être partagé entre l' <
et de la /
, en raison d'un bloc de script est censé (selon SGML) pour être résiliée par l'une balise de fin ouverte (ETAGO) séquence (c - </
):
Bien que le STYLE et les éléments de SCRIPT utiliser CDATA pour leur modèle de données, pour ces éléments, CDATA doivent être traitées différemment par les agents utilisateurs. Le balisage et les entités doivent être traités en tant que texte brut et transmises à l'application. La première occurrence de la séquence de caractères "</
" (balise de fin ouverte séparateur) est considérée comme la résiliation de la fin du contenu de l'élément. Dans des documents valides, ce serait la fin de la balise de l'élément.
Cependant, dans la pratique, uniquement pour les navigateurs de la fin de l'analyse d'une CDATA bloc de script sur un effectif </script>
proche-tag.
Dans le XHTML n'est pas un traitement spécial pour des blocs de script, de sorte que tout <
(ou &
) caractère à l'intérieur d'eux doit être &escaped;
comme dans n'importe quel autre élément. Cependant, les navigateurs que sont l'analyse XHTML est de la vieille école HTML vont se confondre. Il y a des solutions impliquant CDATA blocs, mais il est plus facile pour éviter d'utiliser ces caractères sans échappement. Une meilleure façon de l'écriture d'un élément de script à partir d'un script qui fonctionne sur l'un ou l'autre type d'analyseur serait:
<script type="text/javascript">
document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>');
</script>