Hallo,
Allerdings ist der Code problematisch, wenn er in einem script-Element im Hauptdokument steht und nicht in einer ausgelagerten Javascript-Ressource. Dann ist nämlich beim '</' von '</span' das gesamte script-Element zu Ende, und nachfolgender Code wird nicht mehr ausgeführt.
Diese Regel hat für HTML 4 und SGML-Parser gegolten:
http://www.w3.org/TR/REC-html40/types.html#h-6.2
http://www.w3.org/TR/REC-html40/appendix/notes.html#notes-specifying-data
Browser hatten aber nie SGML-konforme Parser und diese Regel wurde m.W. nicht umgesetzt.
Für HTML5-Parser ist m.W. erst beim </script> ist das script-Element zuende. Das kodifizierte die schon vorher gängige Praxis.
http://www.w3.org/TR/html5/syntax.html#script-data-state
http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-open-state
http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-name-state
Entscheidend ist hier
»U+003E GREATER-THAN SIGN (>)
If the current end tag token is an appropriate end tag token, then switch to the data state and emit the current tag token.«
</irgendwas-anderes-als-script> ist kein appropriate end tag token für <script>.
Siehe auch Live DOM Viewer.
Mathias