Hallo,
Hm? »<« muss nicht maskiert werden.
Naja, eigentlich schon, nur die Browser sehen das nicht so eng. Deshalb ja auch mein Problem.
Nicht »eigentlich schon«, sondern einfach »nein«. HTML schreibt es so vor, dass »<« nicht maskiert werden muss. Wie sollte man es auch maskieren? »<« wäre ja Unsinn. Und »<« geht auch nicht: Zeichenreferenzen und Entity-Referenzen dürfen in script-Elementen gar nicht aufgelöst werden und müssen unangetastet im Textknoten verbleiben. Wenn ein Browser bei <script type="text/javascript">alert("<tag>");</script> »<tag>« ausgibt, ist er schlichtweg fehlerhaft. (XHTML ist eine andere Geschichte.)
Lediglich »</« sollte nicht zwischen den script-Tags auftauchen, weil es zur Erkennung des End-Tags reserviert ist. Wenn ein »</« kommt, muss es Teil von »</script>« sein und das script-Element schließen. Andernfalls muss man »</« notieren, also z.B. document.write("<p>Hallo Welt</p>");.
Ist Dir evt auch bekannt, ob und bis welche Version hinunter der IE und Opera sich daran halten? Teilantworten natürlich auch gern gesehen.
Inwiefern daran halten? Wenn ein »</script>« kommt, sollte jeder Browser, der JavaScript versteht, das script-Element schließen. Dass ein unmaskiertes »</« nur vor »script>« stehen darf, interessiert hingegen keinen Browser, die sind tolerant. Sie sehen über Fehler wie document.write("<p>Hallo Welt</p>"); hinweg und ignorieren den schließenden p-Tag. Das macht hier Opera ab Version 5.05 (Linux).
Mathias