Niedawno odkryłem, że prawdopodobnie istnieje nowy sposób komentowania w HTML5.
Zamiast typowego <!-- -->
wielowierszowego komentarza, o którym czytałem, pomyślałem, że zauważyłem, że moje IDE regularnie <!div >
komentowało. Przetestowałem to i ku mojemu zaskoczeniu Chrome skomentował ten tag. To tylko skomentowało tag, a nie zawartość div, więc musiałem skomentować bliżej, <!/div>
aby uniknąć zamykania innych div.
Przetestowałem inny i wydaje się, że generalnie stawiam wykrzyknik przed otwarciem dowolnego tagu, tego symbolu <
, powoduje, że tag jest komentowany.
Czy to jest rzeczywiście nowe? Czy to zła praktyka? Właściwie jest to bardzo wygodne, ale czy jest jeszcze praktyczne (jeśli nie nowe)?
Edytuj dodatkowe szczegóły: chociaż błąd składni lub błędna interpretacja tej konkretnej składni to dobry powód, dlaczego tak naprawdę Chrome renderuje je jako pełne komentarze?
Kod jest zapisany jako :
<!div displayed> some text here that is still displayed <!/div>
Następnie jest renderowany jako :
<!--div displayed--> some text here that is still displayed <!--/div-->
Odpowiedzi:
Nie ma nowego standardu komentarzy w HTML5. Jedyną poprawną składnią komentarzy jest nadal
<!-- -->
. Z sekcji 8.1.6 W3C HTML5 :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 :
8.2.4.8 Stan otwarty etykiety :
8.2.4.45 Stan otwarty deklaracji znaczników :
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 :
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.
źródło
Nie sądzę, aby to był dobry zwyczaj, ponieważ
<!
oznacza to deklaracje znaczników, takie jak<!DOCTYPE
. Dlatego myślisz, że jest komentowany (cóż ... przeglądarka spróbuje to zinterpretować).Nawet jeśli się nie pojawi, wydaje się, że nie jest to poprawna składnia do komentowania kodu HTML.
źródło