Nie ma nowego standardu komentarzy w HTML5. Jedyną poprawną składnią komentarzy jest nadal <!-- -->
. Z sekcji 8.1.6 W3C HTML5 :
Komentarze muszą zaczynać się od ciągu czterech znaków U + 003C LESS-THAN SIGN, U + 0021 EXCLAMATION MARK, U + 002D HYPHEN-MINUS, U + 002D HYPHEN-MINUS ( <!--
).
Plik <!
pochodzi składniowe SGML DTD znaczników, który nie jest częścią HTML5. W HTML5 jest zarezerwowany dla komentarzy, sekcji CDATA i deklaracji DOCTYPE. Dlatego to, czy ta alternatywa jest złą praktyką, zależy od tego, czy uważasz użycie (lub, co gorsza, uzależnienie od) przestarzałych znaczników za złą praktykę.
Validator.nu nazywa to, co masz, „fałszywym komentarzem”. - co oznacza, że jest traktowany jak komentarz, mimo że nie jest to ważny komentarz. Jest to przypuszczalnie dla wstecznej kompatybilności z wcześniejszym HTML5, który był oparty na SGML i miał deklaracje znaczników, które przyjęły formę <!FOO>
, więc nie nazwałbym tego nowym. Powodem, dla którego są traktowane jak komentarze, jest to, że deklaracje znaczników SGML były specjalnymi deklaracjami nie przeznaczonymi do renderowania, ale ponieważ są bez znaczenia w HTML5 (z powyższymi wyjątkami), jeśli chodzi o HTML5 DOM, są one niczym więcej jak komentarzami .
Poniższe kroki w sekcji 8.2.4 prowadzą do tego wniosku, który Chrome wydaje się podążać co do litery:
8.2.4.1 Stan danych :
Zużyj następny znak wejściowy:
„<” (U + 003C)
Przełącz do stanu otwartego tagu.
8.2.4.8 Stan otwarty etykiety :
Zużyj następny znak wejściowy:
„!” (U + 0021)
Przełącz do stanu otwartego deklaracji znaczników.
8.2.4.45 Stan otwarty deklaracji znaczników :
Jeśli następne dwa znaki są znakami „-” (U + 002D), wykorzystaj te dwa znaki, utwórz token komentarza, którego danymi jest pusty ciąg, i przełącz się do stanu początkowego komentarza.
W przeciwnym razie, jeśli następnych siedem znaków jest dopasowaniem ASCII bez rozróżniania wielkości liter dla słowa „DOCTYPE”, należy użyć tych znaków i przejść do stanu DOCTYPE.
W przeciwnym razie, jeśli istnieje dostosowany bieżący węzeł i nie jest to element w przestrzeni nazw HTML, a następnych siedem znaków uwzględnia wielkość liter dla ciągu „[CDATA [” (pięć wielkich liter „CDATA” z U + 005B LEFT SQUARE BRACKET przed i po), następnie użyj tych znaków i przełącz się do stanu sekcji CDATA.
W przeciwnym razie jest to błąd analizy. Przełącz się do stanu fałszywego komentarza. Następny zużyty znak, jeśli taki istnieje, to pierwszy znak, który znajdzie się w komentarzu.
Zwróć uwagę, że mówi, aby przełączyć się do stanu początkowego komentarza tylko wtedy, gdy sekwencja napotkanych znaków to <!--
, w przeciwnym razie jest to fałszywy komentarz. Odzwierciedla to to, co określono w sekcji 8.1.6 powyżej.
8.2.4.44 Fałszywy komentarz :
Zużywaj każdy znak, aż do pierwszego znaku „>” (U + 003E) lub końca pliku (EOF) włącznie, w zależności od tego, co nastąpi wcześniej. Emituj token komentarza, którego dane są połączeniem wszystkich znaków zaczynających się od znaku, który spowodował przełączenie automatu stanowego w stan fałszywego komentarza, aż do znaku bezpośrednio przed ostatnim wykorzystanym znakiem (tj. Do znaku tuż przed znakiem U + 003E lub EOF), ale z dowolnymi znakami U + 0000 NULL zastąpionymi znakami U + FFFD REPLACEMENT CHARACTER. (Jeśli komentarz został uruchomiony na końcu pliku (EOF), token jest pusty. Podobnie token jest pusty, jeśli został wygenerowany przez ciąg „ <!>
”.)
W prostym języku angielskim, okaże <!div displayed>
język <!--div displayed-->
i <!/div>
język <!--/div-->
, dokładnie tak jak opisano w pytaniu.
Na koniec prawdopodobnie możesz oczekiwać, że inne parsery zgodne z HTML5 będą zachowywać się tak samo jak Chrome.