Myteriöses Verhalten von Kommentaren
Conny
- html
0 Cheatah0 Conny
0 Thomas J.S.0 Conny
Hallo ihr,
ich habe im Quelltext Kommentare eingefügt und damit es deutlich auffällt (zwcks schnellerer Orientierung), in diesem Stil notiert:
<!-- -------------- Die einzelnen Menues ------------- -->
Als ich meine Seiten vom transitional Doctype auf den frameset Doctype umstellte (da ich ein Frameset verwende), erschien plötzlich im Hauptfenster (Netscape, nicht IE) dieser Teil davon:
-------------- Die einzelnen Menues ------------- -->
Zunächst dachte ich, dass er halt Probleme mit den anderen Bindestrichen hat. Also lies ich sie weg. Allerdings hätte dann doch eigentlich der nächste Kommentar erscheinen müssen, der weiter unten im Dokument in gleicher Weise notiert ist. Das passierte aber nicht.
Daraufhin testete ich obige Version mit einer verschiedenen Anzahl an Bindestrichen links und rechts vom Text - und siehe da, bei bestimmten Kombinationen zeigte er im Browser etwas an, bei anderen wiederum nicht.
Ich habe von 10:10 (links:rechts) bis 14:14 alle Versionen ausprobiert und dabei kam heraus, dass folgende Kombinationen für Müll im Browser sorgen:
11:10
13:14
14:13
Ich weiß ja nicht, wie es euch geht, aber ich kann beim besten Willen keinen logischen Zusammenhang erkennen. Wenn wenigstens auch 10:11 nicht funktionieren würde, aber bei dem klappt alles tadellos.
Hat irgendjemand eine Idee oder das definitive Wissen, wieso das passiert?
Conny
PS: Irgendwie ist das das Dämlichste, was ich je bei einem Browser bisher erlebt habe.
Hi,
Als ich meine Seiten vom transitional Doctype auf den frameset Doctype umstellte (da ich ein Frameset verwende), erschien plötzlich im Hauptfenster (Netscape, nicht IE) dieser Teil davon:
natürlich. Schließlich hat das erste Auftreten der Zeichenkette "--" den Kommentar beendet.
PS: Irgendwie ist das das Dämlichste, was ich je bei einem Browser bisher erlebt habe.
Sein Verhalten ist korrekt. Du hast einfach die Standards nicht beachtet.
Cheatah
natürlich. Schließlich hat das erste Auftreten der Zeichenkette "--" den Kommentar beendet.
Genau das war meine Vermutung, wie ich bereits schrieb. Wenn dem so wäre, würde er jedoch im Browser nicht
-- --------- hdgdhfg ------------ -->
anzeigen, sondern müsste die ersten vier - weglassen, weil ja erst dann der Kommentar beendet wäre. Also so:
------- hdgdhfg ------------ -->
Genauso unlogisch ist es, dass er es bei manchen Kombinationen falsch macht und bei anderen richtig. (Egal jetzt, was man als richtig oder falsch ansieht.) Wenn er es so interpretieren würde, wie du sagst, müsste er es immer so interpretieren.
Darüber hinaus beendet laut offiziellen Angaben die Zeichenfolge --> den Kommentar und nicht --. Da man sogar HTML-Quellcode dazwischen schreiben darf, kann ich mir nicht vorstellen, dass schon einzelne Teile des --> den Kommentar beenden können. Ansonsten müsste es ja große Konflikte mit den ganzen spitzen Klammern geben schreibt man HTML-Code dazwischen.
Deine Begründung scheint zwar die naheliegndste zu sein (Es war ja auch die, an die ich zuerst dachte.), aber ich habe trotzdem noch Zweifel, ob es das wirklich ist.
Hallo,
ich habe im Quelltext Kommentare eingefügt und damit es deutlich auffällt (zwcks schnellerer Orientierung), in diesem Stil notiert:
<!-- -------------- Die einzelnen Menues ------------- -->
Als ich meine Seiten vom transitional Doctype auf den frameset Doctype umstellte (da ich ein Frameset verwende), erschien plötzlich im Hauptfenster (Netscape, nicht IE) dieser Teil davon:
-------------- Die einzelnen Menues ------------- -->
Die Lösung ist sehr einfach. Du hast eine de üblichsten Fehler gemacht.
IN SGML und so auch in HTML bneginnt ein Kommentar mit -- und endet mit -- (also in beiden Fällen mit dem zwei Bindestrichen!) Die Zeichen <! sind die "markup open delimiter" und das Zeichen > ist das "markup close delimiter" (Anfang und Ende vom Auszeichung)
Wenn du also nach dem Anfag eines Kommetras dann irgendwo im Kommetar zwei Bindestriche hast erachtet ein HTML-Parser den Kommantar für beendet und der Rest wird je nach dem ob du noch mehrmals doppelte Bindestriche hast wieder als Kommentar gezählt und wieder beendet(weil es bis dahin ein > folgte).
Verzichte bitte auf doppelte Bindestriche in kommentaren und du hast diese Problem nicht.
http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.4
Grüße
Thomas
Hi Thomas,
Die Lösung ist sehr einfach. Du hast eine de üblichsten Fehler gemacht.
Darin bin ich Meister. :-)
Wenn du also nach dem Anfag eines Kommetras dann irgendwo im Kommetar zwei Bindestriche hast erachtet ein HTML-Parser den Kommantar für beendet und der Rest wird je nach dem ob du noch mehrmals doppelte Bindestriche hast wieder als Kommentar gezählt und wieder beendet(weil es bis dahin ein > folgte).
Wenn ich dich richtig verstanden habe, bildet man mit <!-- und --> also eigentlich einen Kommentar-"Block", innerhalb dessen mehrere Kommentare stehen können, unterbrochen von normalem Quellcode? So in dieser Art:
<!-- Das ist ein Kommentar -- Dieses hier ist kein Kommentar mehr, weil vorher zwei Bindestriche stehen. Deswegen kann man es im Browser lesen. -- Das ist jedoch wieder ein Kommentar, weil mit zwei Bindestrichen eingeleitet und beendet. -->
Wobei das --> den gesamten Kommentar-"Block" beendet.
Richtig?
Conny,
Licht am Ende des Tunnels sehend
Hallo,
Wenn ich dich richtig verstanden habe, bildet man mit <!-- und --> also eigentlich einen Kommentar-"Block",
Ja, das ist der Kommentar in HTML.
innerhalb dessen mehrere Kommentare stehen können, unterbrochen von normalem Quellcode? So in dieser Art:
Fast ;-)
In einem HTML-Kommentar darf eben nicht das "--" vorkommen es sein denn eben zum Bedenden des Kommentars mit "-->"
Deshalb ragerien die Browser unterschiedlich bei einer Zeichenfolge von "--" im Kommentar, weil es sich mit dem SGML-Syntax "schlägt":
Wenn du dir z.B. die HTML-DTD anschaust:
<!ATTLIST DIV
%attrs; -- %coreattrs, %i18n, %events --
%reserved; -- reserved for possible future use --
Da passiert genau das was du meinst:
"<!" Beginn Auszeichnungsdeklaration
"--" Beginn Kommentar bis zum nächten "--"
"--" Beginn Kommentar bis zum nächten "--"
">" Ende Auszeichnungsdeklaration
Wobei das --> den gesamten Kommentar-"Block" beendet.
Richtig?
Ja, für HTML-Kommentare ;-)
Grüße
Thomas