Kommentare in HTML wo erlaubt?
Henry
- html
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
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
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:
Rolf
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
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
Hallo Rolf,
weil innerhalb eines Kommentars kein CDATA eröffnet werden kann.
<!-- <![CDATA[ … ]]> -->
ist unproblematisch.
Grüße,
Thomas
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
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
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
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
@@Rolf B
… aber ich werde das im Wiki aufschreiben.
Aus welchem Grund sollte CDATA im Wiki Erwähnung finden?
😷 LLAP
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!
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