Henry: HTML Kommentare logische Verwendung innerhalb Elemente

Hallo,

die letzten Tage habe ich sehr viel mit HTML-Kommentaren experimentiert. Dabei ist festzustellen, dass dieses Thema allgemein nicht viel dokumentiert wird.

So stellt sich mir eine Frage. Mit welcher Logik werden Browserentwickler dazu angehalten? Ich meine damit, es wäre ja einfach, wenn bei <!-- --> einfach alles ignoriert wird was da drin steht und vor allem wo das drin steht.

Bspw. innerhalb Script und style funktionierts ja nicht, auch nicht textarea. Bei Elementen wie p, div, button, usw. aber schon.

Klar, der sicherste Weg scheint zu sein, grundsätzlich ausserhalb von Elementen. Dennoch reizt mich zu wissen, ob es eine Liste, obwohl das wäre falsch, kann sich ja ständig ändern, daher also besser eine Logik gibt, an der man das zuverlässig ableiten kann?

Gruss
Henry

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

    Kommentare sind Nodes im DOM.

    Nodes sind Text, Kommentare, Elemente, und noch mehr. Hier ist die Typenliste.

    Insofern kann ein Kommentar grundsätzlich erstmal überall da stehen, wo ein Node stehen kann (von Attribute-Nodes mal abgesehen).

    Das wird noch eingeschränkt durch bestimmte Inhaltstypen. Jedes Ding im DOM hat einen bestimmten Inhaltstyp, und darf nur Dinge als childNode enthalten, die ihrerseits einen bestimmten Inhaltstyp haben. D.h. du musst bei jedem Element einzeln schauen, welche Inhaltstypen es verträgt, wenn Du es genau wissen willst.

    Bei textarea und style steht ausdrücklich, dass nur Text hinein darf. Das schließt HTML Kommentare aus. Bei style steht, dass der Text ein Stylesheet bilden muss, und das erlaubt dann wiederum CSS Kommentare.

    Steht also letztlich alles irgendwo in der Spec, aber es ist nicht leicht zusammenzutragen.

    Rolf

    --
    sumpsi - posui - obstruxi
  2. Guten Morgen,

    So stellt sich mir eine Frage. Mit welcher Logik werden Browserentwickler dazu angehalten? Ich meine damit, es wäre ja einfach, wenn bei <!-- --> einfach alles ignoriert wird was da drin steht und vor allem wo das drin steht.

    Ganz so einfach ist es nicht. Wenn man solche Fragen hat, empfiehlt sich in der Regel ein Blick in die Spezifikation: https://html.spec.whatwg.org

    Bspw. innerhalb Script und style funktionierts ja nicht, auch nicht textarea. Bei Elementen wie p, div, button, usw. aber schon.

    Das Script-Element und das Style-Element enthalten kein HTML (ausgenommen wenn man script als Template nutzt, wie das einige JavaScript-Template Engines tun). Für den Inhalt von Script und Style gelten dann die Regeln der jeweiligen Sprache, für Script in der Regel JavaScript und für Style die Regeln von CSS. Textarea darf nur Text enthalten, ergo darf der Browser hier gar nichts anderes tun als den Inhalt so wie er ist anzuzuzeigen.

    Klar, der sicherste Weg scheint zu sein, grundsätzlich ausserhalb von Elementen. Dennoch reizt mich zu wissen, ob es eine Liste, obwohl das wäre falsch, kann sich ja ständig ändern, daher also besser eine Logik gibt, an der man das zuverlässig ableiten kann?

    Die HTML-Spezifikation (https://html.spec.whatwg.org) hat bei der Beschreibung der Elemente jeweils einen Punkt Content Model. Dieser Punkt gibt an welcher Inhalt in dem Element erlaubt ist. Die unterschiedlichen Content-Arten wie z.B. Flow Content werden in der Spezifikation ebenfalls erläutert: https://html.spec.whatwg.org/#kinds-of-content

    Beste Grüße

    Jens