levu: in JS in ner Zeichenkette kein </script> erlaubt????

Hallo,

wenn ich folgenden Quelltext habe (im Head):

  
<script type="text/javascript">  
/*<![CDATA[*/  
var variable = '</script>';  
/*]]>*/  
</script>]

dann bekomme ich im Browser [1] folgende Ausgabe:

'; /*]]>*/

Wie kann ich, ohne das </script> zu zerstückeln, es in eine Zeichenkette packen? Ist dieses Verhalten der Browser richtig?

[1] (Opera 10.0, FF3, IE7, Chrome 1.x (neueste), Safari 3.x (auch neuester))

mfg, Flo

--
sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
  1. Hi,

    Wie kann ich, ohne das </script> zu zerstückeln, es in eine Zeichenkette packen?

    gar nicht. Nicht, solange sich dieser JavaScript-Code in einem HTML-Dokument befindet.

    Ist dieses Verhalten der Browser richtig?

    Absolut. Die Zeichenkette "</" beendet einen <script>-Block. Gängiges Vorgehen: Escapen des Slashes.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah!

      Absolut. Die Zeichenkette "</" beendet einen <script>-Block. Gängiges Vorgehen: Escapen des Slashes.

      Ist in dem Fall sein CDATA-Block nicht falsch eingeleitet?

      Viele Grüße aus Frankfurt/Main,
      Patrick

      --
      _ - jenseits vom delirium - _

         Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
      J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
      1. /*<![CDATA[*/
        Ist in dem Fall sein CDATA-Block nicht falsch eingeleitet?

        Nein, warum?

        Mathias

        1. Hallo,

          | | /*<![CDATA[*/
          | Ist in dem Fall sein CDATA-Block nicht falsch eingeleitet?

          Nein, warum?

          Weil das mit dem </ in einem CDATA-Block eigentlich nicht zählen. Wenn es ]]> wäre und nicht </ , dann würde ich es verstehen.

          mfg, Flo

          --
          sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
          1. Weil das mit dem </ in einem CDATA-Block eigentlich nicht zählen. Wenn es ]]> wäre und nicht </ , dann würde ich es verstehen.

            Na, das einzige, was du nicht verstehst, ist die Bedeutung von »HTML-kompatiblem XHTML«, wovon du Gebrauch machst. XHTML 1 gehört nämlich gleichzeitig zwei Welten an.

            Du schreibst zwar XHTML, aber lieferst es mit dem MIME-Typ text/html an die Browser. Diese benutzen deshalb keinen XML-Parser und verarbeiten das Dokument daher auch nicht nach X(HT)ML-Regeln. Sondern sie benutzen ihre Tag-Soup-Parser und halten sich grob an die in HTML 4 definierten Regeln - zumindest in diesem Punkt: In HTML 4 wird der Inhalt eines script-Elementes mit der Zeichenkette </ beendet - immer, ohne Ausnahme. Du musst daher </ schreiben.

            Also: XML-Regeln gelten AUCH für dein XHTML-Dokument, und aus XML-Sicht machst du alles richtig und aus XML-Sicht ist deine Überlegung völlig richtig. Der Punkt ist nur, dass dein Dokument nicht als XML von den Browsern verarbeitet wird und sie andere Regeln anlegen. Gemäß diesen Regeln hat der CDATA-Abschnitt keine Bedeutung.

            Mathias

            1. Hallo,

              Du schreibst zwar XHTML, aber lieferst es mit dem MIME-Typ text/html an die Browser.

              Ah, ok!! Danke!

              mfg, Flo

              --
              sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
        2. Hallo molily!

          »» > > /*<![CDATA[*/
          »» Ist in dem Fall sein CDATA-Block nicht falsch eingeleitet?
          Nein, warum?

          Hast Recht... irritiert hat mich das durch [ code lang=html] verursachte, falsche Syntaxhighlighting _und_ die eckige Klammer nach dem (echten) schließenden </script>...

          Viele Grüße aus Frankfurt/Main,
          Patrick

          --
          _ - jenseits vom delirium - _

             Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
          J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
          1. Hallo,

            _und_ die eckige Klammer nach dem (echten) schließenden </script>...

            die war ungewollt -.-

            mfg, Flo

            --
            sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|