Récemment, j'ai découvert qu'il existe peut-être une nouvelle façon de commenter en HTML5.
Au lieu des <!-- -->
commentaires typiques sur plusieurs lignes que j'ai lus, j'ai pensé avoir remarqué que mon IDE faisait régulièrement des <!div >
commentaires. Je l'ai donc testé et, à ma grande surprise, Chrome avait commenté cette balise. Il ne faisait que commenter la balise et non le contenu du div, donc j'ai dû commenter le plus proche <!/div>
pour éviter de fermer d'autres divs.
J'en ai testé un autre et il semble qu'en général, mettre un marqueur d'exclamation devant l'ouverture de n'importe quelle balise, ce symbole <
, rend cette balise commentée.
Est-ce vraiment nouveau? Est-ce une mauvaise pratique? C'est en fait très pratique, mais est-ce encore pratique (sinon nouveau)?
Modifier les détails supplémentaires: bien qu'une erreur de syntaxe ou une mauvaise interprétation de cette syntaxe particulière soit une bonne raison, comment se fait-il que Chrome les rende réellement sous forme de commentaires complets?
Le code s'écrit :
<!div displayed> some text here that is still displayed <!/div>
Et puis il est rendu comme :
<!--div displayed--> some text here that is still displayed <!--/div-->
Réponses:
Il n'y a pas de nouvelle norme pour les commentaires en HTML5. La seule syntaxe de commentaire valide est toujours
<!-- -->
. De la section 8.1.6 du W3C HTML5 :le
<!
syntaxe provient du balisage SGML DTD, qui ne fait pas partie de HTML5. En HTML5, il est réservé aux commentaires, aux sections CDATA et à la déclaration DOCTYPE. Par conséquent, la question de savoir si cette alternative est une mauvaise pratique dépend du fait que vous considérez l'utilisation (ou pire, la dépendance sur) d'un balisage obsolète comme une mauvaise pratique.Validator.nu appelle ce que vous avez un "faux commentaire". - ce qui signifie qu'il est traité comme un commentaire même s'il ne s'agit pas d'un commentaire valide. C'est vraisemblablement pour la compatibilité descendante avec le pré-HTML5, qui était basé sur SGML, et avait des déclarations de balisage qui prenaient la forme
<!FOO>
, donc je n'appellerais pas cela nouveau. La raison pour laquelle ils sont traités comme des commentaires est que les déclarations de balisage SGML étaient des déclarations spéciales qui ne sont pas destinées à être rendues, mais puisqu'elles n'ont aucun sens en HTML5 (avec les exceptions ci-dessus), en ce qui concerne le DOM HTML5, elles ne sont rien de plus que des commentaires .Les étapes suivantes de la section 8.2.4 mènent à cette conclusion, que Chrome semble suivre à la lettre:
8.2.4.1 État des données :
8.2.4.8 État ouvert de l'étiquette :
8.2.4.45 État ouvert de la déclaration de balisage :
Notez qu'il dit de passer à l'état de début du commentaire uniquement si la séquence de caractères rencontrée est
<!--
, sinon c'est un faux commentaire. Cela reflète ce qui est indiqué dans la section 8.1.6 ci-dessus.8.2.4.44 État de commentaire fictif :
En clair, cela se transforme
<!div displayed>
en<!--div displayed-->
et<!/div>
en<!--/div-->
exactement comme décrit dans la question.Sur une note finale, vous pouvez probablement vous attendre à ce que d'autres analyseurs compatibles HTML5 se comportent de la même manière que Chrome.
la source
Je ne pense pas que ce soit une bonne habitude à prendre car cela
<!
signifie des déclarations de balisage comme<!DOCTYPE
. Ainsi vous pensez qu'il est commenté (enfin ... le navigateur essaiera de l'interpréter).Même si cela n'apparaît pas, cela ne semble pas être la syntaxe correcte pour commenter le code HTML.
la source