JO: document.writeln("</script>")

Hallo,

weiss jemand wieso es in untenstehendem Quelltext einen Fehler gibt "unterminated string constant"? Wenn man <script ...> und </script> weglässt gibts kein Problem. Der Fehler scheint bei </script> zu liegen, anscheinend bei der Zeichenfolge "</s" denn wenn man schreibt "</ s" oder "< /s" dann kommt zumindest kein Javascript-Fehler mehr. Weiss jemand die Erklärung?

<html>
<head>

<script language="javascript">

function schreib()
   {
   with(document)
    {
    writeln("<html><head>");
    writeln("<link rel='stylesheet' type='text/css' href='styles/hommel.css'>");
    writeln("<script language='javascript'>");
    writeln("< /script>");
    writeln("</head><body>");
    writeln("<table width='140' style='font-family:verdana; font-size:12px'><tr><td>");
    writeln("test");
    writeln("</td></tr></table>");
    writeln("</body></html>");
    }

}

</script>

</head>

<body onload="schreib()">

</body>
</html>

  1. Hi,

    weiss jemand wieso es in untenstehendem Quelltext einen Fehler gibt "unterminated string constant"?

    weil durch das </script> der <script>-Bereich beendet wurde. HTML-End-Tags haben innerhalb eines solchen _nichts_ verloren - überprüfe die Seite mal mit http://validator.w3.org/.

    denn wenn man schreibt "</ s" oder "< /s" dann kommt zumindest kein Javascript-Fehler mehr.

    Dann ist es sogar kein SGML-Fehler mehr, weil Du keinen End-Tag hast. Die Zeichenfolge "<", "/", "Buchstabe" darf nicht vorkommen. Verhindern kannst Du sie am lesbarsten, indem Du das "/" escapest, also einen Backslash voranstellst. Bei _jedem_ End-Tag.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,

      Dann ist es sogar kein SGML-Fehler mehr, weil Du keinen End-Tag hast. Die Zeichenfolge "<", "/", "Buchstabe" darf nicht vorkommen.

      Der Buchstabe spielt schon keine Rolle mehr.

      The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content.

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      1. Hi,

        Der Buchstabe spielt schon keine Rolle mehr.

        danke für die Info, das war mir in der Tat nicht bewusst.

        The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content.

        Hast Du dazu noch 'ne URL?

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi,

          Hast Du dazu noch 'ne URL?

          Ups, vergessen: http://www.w3.org/TR/html4/types.html#type-cdata,
          letzter Absatz von CDATA, 3. Satz
          cu,
          Andreas

          --
          Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
          1. Hi,

            Hast Du dazu noch 'ne URL?
            http://www.w3.org/TR/html4/types.html#type-cdata,

            merci!

            Cheatah

            --
            X-Will-Answer-Email: No