Henry: Kommentare in HTML wo erlaubt?

Hallo,

soweit ich mich umgeschaut habe, scheint es keine Vorgabe für die Platzierung von Kommentaren zu geben?

Das bedeutet ich dürfte also auch unbesorgt zb.

<html>
…
…
</body>
<!-- irgendwas ... -->
</html>

das machen? Also zumindest der Validator meckert nicht.

Gruss
Henry

--
Meine Meinung zu DSGVO & Co:
„Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“

akzeptierte Antworten

  1. Hallo Henry,

    Das bedeutet ich dürfte also auch unbesorgt zb.

    <html>
    …
    …
    </body>
    <!-- irgendwas ... -->
    </html>
    

    das machen?

    Ja. Innerhalb von Tags geht es nicht.

    Bis demnächst
    Matthias

    --
    Du kannst das Projekt SELFHTML unterstützen,
    indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
  2. Hallo Henry,

    kurz gesagt: Ja.

    Lang gesagt: Die HTML Syntaxbeschreibung schreibt einiges über zulässige Platzierungen von Kommentaren, aber kaum nützliches. Zum Beispiel hier.

    Hier wird es schon etwas interessanter. Da steht, wie ein Element aufgebaut sein darf, und da werden Kommentare stets in einem Atemzug mit Text, &-Symbolen, und Kindelementen aufgeführt. Danach kommen Beschreibungen von Start- und End-Tags, und dort ist von Kommentaren keine Rede.

    Also, Daumenregeln:

    • ein Kommentar kann außerhalb des HTML Elements geschrieben werden (vor DOCTYPE, zwischen DOCTYPE und <html> und nach </html>)
    • Innerhalb des html Elements kann Kommentar überall dort verwendet werden, wo auch ein Text-Node oder ein anderes Element notiert werden könnte.
    • Dort, wo kein HTML Kontext vorliegt, kann auch kein Kommentar erstellt werden (innerhalb eines Kommentars, in den Anführungszeichen eines Attributwerts, in einem CDATA Block).

    Rolf

    --
    sumpsi - posui - obstruxi
  3. Hallo,

    ich bin nochmal auf das script-Element gestoßen. Vermutlich nichts Neues für die meisten, aber ich werde das im Wiki aufschreiben.

    <script>
    let a=7;
    <!-- a = a + 1; -->
    console.log(a);
    </script>
    

    gibt 7 aus.

    Und während

    <script>
    console.log("Hallo -->");
    </script>
    

    noch brav ein Hallo --> ausgibt, führt

    <!-- 
    <script>
    console.log("Hallo -->");
    </script>
    --> 
    

    ins erwartbare Chaos. Die Ausgabe ist "); </script> -->.

    Aber selbst dies hier geht nicht:

    <!-- 
    <script>//<![CDATA[
    console.log("Hallo -->");
    //]]>
    </script>
    --> 
    

    weil innerhalb eines Kommentars kein CDATA eröffnet werden kann.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      <script>
      let a=7;
      <!-- a = a + 1; -->
      console.log(a);
      </script>
      

      gibt 7 aus.

      das überrascht mich auf den ersten Blick, auf den zweiten dann aber doch nicht. Der HTML-Parser läuft anscheinend als erster drüber und schmeißt die Kommentare weg. Auch innerhalb des script-Elements.

      Allerdings nur bei einem Script, das direkt im HTML-Dokument steht. In einem externen Javascript müsste das einen Syntax Error schmeißen.

      <script>
      console.log("Hallo -->");
      </script>
      

      noch brav ein Hallo --> ausgibt, führt

      <!-- 
      <script>
      console.log("Hallo -->");
      </script>
      --> 
      

      ins erwartbare Chaos. Die Ausgabe ist "); </script> -->.

      Das hätte ich erwartet. Aber das ist nicht die Ausgabe an der Konsole, sondern der HTML-Output im Browserfenster.

      Aber selbst dies hier geht nicht:

      <!-- 
      <script>//<![CDATA[
      console.log("Hallo -->");
      //]]>
      </script>
      --> 
      

      weil innerhalb eines Kommentars kein CDATA eröffnet werden kann.

      Okay. Auf die Idee bin ich nicht gekommen.

      Live long and pros healthy,
       Martin

      --
      Für welches Tier mühen wir uns am meisten ab? - Für die Katz'.
    2. Hallo Rolf,

      weil innerhalb eines Kommentars kein CDATA eröffnet werden kann.

      <!-- <![CDATA[ … ]]> -->
      

      ist unproblematisch.

      Grüße,
      Thomas

      1. Hallo ThomasM,

        unproblematisch vielleicht, aber nicht wirksam. Alles, was ab <!-- steht, wird als Text aufgefasst, bis zur --> Zeichenfolge. D.h. <![CDATA[ wird nicht als Eröffnung eines CDATA-Nodes interpretiert.

        Betrachte ich die ChildNodes dieses p Elements:

        <p>
        <!-- <![CDATA[ Hallo ]]> -->
        </p>
        

        finde ich zwei Text-Nodes mit Zeilenumbrüchen und einen Comment-Node, in dessen Text
        " <![CDATA[ Hallo ]]> " lautet, inclusive der Leerzeichen.

        Und demnach wird (ich hab's mit Chrome und Firefox ausprobiert)

        <!-- <![CDATA[
        <script>
        console.log("Hallo --> Welt")
        </script>
        ]]> -->
        

        genauso interpretiert, wie es der Syntax-Highlighter des Forums darstellt.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf,

          Und demnach wird (ich hab's mit Chrome und Firefox ausprobiert)

          <!-- <![CDATA[
          <script>
          console.log("Hallo --> Welt")
          </script>
          ]]> -->
          

          genauso interpretiert, wie es der Syntax-Highlighter des Forums darstellt.

          Dort wird zunächst ein Kommentar gesetzt, wobei <!{CDATA[ Teil des Inhalts ist. Aber der CDATA-Abschluss ]]> hat nun keine Zuordnung mehr, ebenso --> nicht. Mein Hinweis bezog sich auf <![CDATA[ … ]]> im Kommentar und das ist auch XML-konform

          Grüße,
          Thomas

          1. Hallo ThomasM,

            mein Hinweis bezog sich auf einen Script-Block, den jemand auszukommentieren versucht und der --> enthält. Deine Antwort darauf habe ich so gedeutet, dass das durch Hinzufügen von <![CDATA[ ... ]]> unproblematisch würde.

            Meine Antwort darauf ist: CDATA in einem Kommentar ist deshalb unproblematisch, weil es keine CDATA-Semantik hat, sondern einfach Text in einem Kommentar ist. Deswegen beseitigt es das Problem nicht. Und dazu stehe ich. Auch ohne ein Script darin ist

            <!-- Hallo <![CDATA[ --> ]]> Welt -->

            nicht valide, bzw. es bleibt ]]> Welt --> als Text übrig.

            Ausprobiert mit plain HTML und auch innerhalb eines <svg> Elements (das ja XML enthalten muss).

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hallo Rolf,

              mein Hinweis bezog sich auf einen Script-Block, den jemand auszukommentieren versucht und der --> enthält. Deine Antwort darauf habe ich so gedeutet, dass das durch Hinzufügen von <![CDATA[ ... ]]> unproblematisch würde.

              So war es auch nicht gemeint, bin nur bei CDATA (nicht) eröffnen etwas unscharf getriggert worden. In meinem Hinweis wird eben kein CDATA eröffnet, sondern nur textuell verwendet. Insofern auch kein Dissenz.

              Grüße,
              Thomas

    3. @@Rolf B

      … aber ich werde das im Wiki aufschreiben.

      Aus welchem Grund sollte CDATA im Wiki Erwähnung finden?

      😷 LLAP

      --
      “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
      1. Hallo,

        Aus welchem Grund sollte CDATA im Wiki Erwähnung finden?

        gibt keinen, hat schließlich schon in der Wikipedia einen Eintrag.

        Gruß
        Kalk

        Edith sagt, es gibt doch einen, schließlich verlinkt der WP-Artikel auf den SELFHTML-Abschnitt!

      2. Hallo Gunnar,

        CDATA ist nicht der Punkt, sondern die Wechselwirkung von HTML Kommentaren und inline-Script.

        Den Hinweis auf CDATA habe ich auch aufgenommen (im Sinne von: braucht nur XHTML), weil es immer noch genug Beispielscripte gibt, die sowas zeigen.

        Generell wäre CDATA in einem Wiki-Abschnitt über XML angebracht, bzw. SVG, was ja XML ist. Folgendes SVG funktioniert nur mit CDATA (oder mit & Maskierung der spitzen Klammern) richtig.

        <svg viewbox="0 0 600 300">
          <text y="20">Hello <foo> World</text>
        </svg>
        

        Was wir derzeit im Wiki-Index haben, ist eine Weiterleitungskette.

        CDATA -> HTML#CDATA -> HTML/Elemente.

        Eine Volltext-Suche nach CDATA liefert aber folgerichtig einige SVG Artikel, die sich über CDATA auslassen.

        Rolf

        --
        sumpsi - posui - obstruxi