Kürzlich habe ich festgestellt, dass es in HTML5 möglicherweise eine neue Art des Kommentierens gibt.
Anstelle der typischen <!-- -->
mehrzeiligen Kommentare, über die ich gelesen habe, dachte ich, ich hätte bemerkt, dass meine IDE regelmäßig <!div >
auskommentiert wurde. Also habe ich es ausprobiert und zu meiner Überraschung hatte Chrome dieses Tag auskommentiert. Es wurde nur das Tag und nicht der Inhalt der Div auskommentiert, daher musste ich die Annäherung <!/div>
auskommentieren, um zu vermeiden, dass andere Divs geschlossen werden.
Ich habe einen anderen getestet und es scheint, dass durch das Platzieren eines Ausrufezeichens vor der Öffnung eines Tags, dieses Symbol <
, dieses Tag auskommentiert wird.
Ist das eigentlich neu? Ist es schlechte Praxis? Es ist eigentlich sehr praktisch, aber ist es noch praktisch (wenn nicht neu)?
Bearbeiten Sie zusätzliche Details: Obwohl ein Syntaxfehler oder Fehlinterpretationen dieser bestimmten Syntax ein guter Grund sind, wie kommt es, dass Chrome sie tatsächlich als vollständige Kommentare rendert?
Der Code lautet wie folgt :
<!div displayed> some text here that is still displayed <!/div>
Und dann wird es gerendert als :
<!--div displayed--> some text here that is still displayed <!--/div-->
Antworten:
Es gibt keinen neuen Standard für Kommentare in HTML5. Die einzig gültige Kommentarsyntax ist noch
<!-- -->
. Aus Abschnitt 8.1.6 von W3C HTML5 :Die
<!
Syntax stammt aus dem SGML-DTD-Markup, das nicht Teil von HTML5 ist. In HTML5 ist es für Kommentare, CDATA-Abschnitte und die DOCTYPE-Deklaration reserviert. Ob diese Alternative eine schlechte Praxis ist, hängt daher davon ab, ob Sie die Verwendung (oder schlimmer noch die Abhängigkeit von) veraltetem Markup als schlechte Praxis betrachten.Validator.nu nennt einen "falschen Kommentar". - was bedeutet, dass es wie ein Kommentar behandelt wird, obwohl es kein gültiger Kommentar ist. Dies dient vermutlich der Abwärtskompatibilität mit SGML-basiertem Pre-HTML5 mit Markup-Deklarationen in der Form
<!FOO>
, sodass ich dies nicht als neu bezeichnen würde. Der Grund , warum sie behandelt sind wie Kommentare, da SGML Markup - Deklarationen waren besondere Erklärungen nicht dazu gedacht , gemacht werden, aber da sie sinnlos in HTML5 (mit den oben genannten Ausnahmen) sind, so weit der HTML5 DOM betreffen sie sind nichts anderes als Kommentare .Die folgenden Schritte in Abschnitt 8.2.4 führen zu dieser Schlussfolgerung, die Chrome anscheinend genau befolgt :
8.2.4.1 Datenstatus :
8.2.4.8 Tag geöffnet Zustand :
8.2.4.45 Offener Zustand der Markup-Deklaration :
Beachten Sie, dass nur dann in den
<!--
Startstatus des Kommentars gewechselt werden soll , wenn die Reihenfolge der gefundenen Zeichen stimmt . Andernfalls handelt es sich um einen falschen Kommentar. Dies spiegelt wider, was in Abschnitt 8.1.6 oben angegeben ist.8.2.4.44 Scheinkommentarstatus :
Im Klartext, diese abwechselnd
<!div displayed>
in<!--div displayed-->
und<!/div>
in<!--/div-->
, genau wie in der Frage beschrieben.Abschließend können Sie wahrscheinlich erwarten, dass sich andere HTML5-kompatible Parser genauso verhalten wie Chrome.
quelle
Ich denke nicht, dass dies eine gute Angewohnheit ist, da dies
<!
für Markup-Erklärungen wie steht<!DOCTYPE
. Sie denken also, es ist kommentiert (nun ... der Browser wird versuchen, es zu interpretieren).Auch wenn es nicht angezeigt wird, scheint dies nicht die richtige Syntax zum Kommentieren von HTML-Code zu sein.
quelle