(Peinliche) Frage zu JavaScript in XHTML

  • Hallo,
    bin zwar in PHP gut in Form, habe aber noch reichlich Defizite in JavaScript. Das versuche ich jetzt aufzuholen und bin in einem Buch (von 2011) auf etwas Seltsames gestoßen, dass ich woanders noch nicht gesehen habe.
    Wenn ich einen JavaScript-Bereich in einer XHTML-Seite definiere, wird das '<' und das Ampersand (wo auch immer es dort vorkommen mag) als XML erkannt und nicht als JavaScript.
    Aus eben jenem Grund soll man dieses Konstrukt verwenden:
    <script type="text/javascript">
    <![CDATA[

    ]]>
    </script>
    zur Sicherheit auch noch in einzeiligen Kommentarzeichen (//) vor dem <![CDATA[ und den abschließenden eckigen Klammern.
    Das Ganze soll, laut diesem Buch, für Browser sein, die nicht XHTML-kompatibel sind! :shock:
    Frage A: Stimmt dieses Konstrukt?
    und
    Frage B: Welcher Browser kann heutzutage kein XHTML interpretieren?
    Bin zwar in JS nicht der Hellste, hört sich für mich aber doch etwas krude an.
    Kann mir jemand von Euch da eine eindeutige Antwort drauf geben? Ich habe mehrere Bücher über JavaScript, aber das habe ich dort noch nie gesehen.

    Danke vorab, Andreas

    "Früher war die Zukunft auch besser." - Karl Valentin ( dt. Komödiant, 1882 bis 1948 )

  • Ja, das stimmt so.
    Nein, es stimmt nicht, dass das für Browser gedacht ist. Eigentlich dient es (in HTML-basierten Webseiten) dazu dem HTML-Validator in dem HTML-Dokument enthaltenes JavaScript vorzuenthalten. Würde man bei manchen JavaScript-Schreibweisen auf CDATA verzichten, würde der Validator auch Zeichen im JavaScript-Code anmeckern. Meist ist das ein > oder < in einer if-Bedingung.

    CDATA wird allerdings auch an anderen Stellen verwendet, nämlich in XML-Dokumenten um dadurch nicht-XML-validen Code zu "verstecken". Wenn man bspw. ein per DTD vorgegebenes XML-Format hat und darin in einem Element einen HTML-Code schreiben möchte, dann entspräche der HTML-Code nicht dem per DTD vorgegebenen XML-Format. Deshalb maskiert man den HTML-Code dort ebenfalls mit dem CDATA-Block.

    In jedem Fall würde ich jedoch empfehlen JavaScript-Code nicht im HTML-Dokument selbst zu hinterlegen sondern in einer externen JS-Datei.

  • Hi....
    .... und Danke für die Antwort. War wesentlich plausibler als im Buch.
    Ich lagere meine JavaScripts sowieso (fast) immer aus, aber interessiert hatte es mich schon.
    Habe jetzt, beim "Quelltext-Schmulen", auch einen Style-Block gesehen, der per CDATA 'versteckt' war.
    Jedenfalls leuchtet es mir jetzt ein.

    Danke
    und Gruß, A.:)

    "Früher war die Zukunft auch besser." - Karl Valentin ( dt. Komödiant, 1882 bis 1948 )