zgodnie z tytułem; czy można mieć zagnieżdżone komentarze w prawidłowym HTML? zobacz poniższy przykład ...
<p>some text</p>
<!-- comment 1
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
end of comment 1 -->
<p>some more text</p>
Wydaje się, że nie, czy ktoś wie, jak mogę sprawić, by zagnieżdżone komentarze działały?
html
validation
comments
QAZ
źródło
źródło
Odpowiedzi:
Kiedy zagnieżdżasz komentarz, zamień „-” na „- -”. Kiedy usuwasz zagnieżdżenie, odwróć procedurę. To nie jest to,
<!--
co jest zabronione, ale--
.Przykład:
<!-- some stuff <!- - some inner stuff - -> <!- - a sibling - -> the footer -->
źródło
--
z- -
na wewnętrznej (zagnieżdżone) komentarzu .TL; DR : Niestety nie, nie jest to możliwe (i nigdy nie będzie).
Krótka odpowiedź:
Komentarz HTML nie jest tym, za co wielu się uważa. HTML to forma SGML, w której komentarze są rozdzielane parami podwójnych myślników (-- … --).
Zatem każda para podwójnych kresek wewnątrz pary nawiasów ostrych z wykrzyknikiem po nawiasie otwierającym ( <! --⋯-- > ) jest komentarzem. Specyfikacja mówi to lepiej niż ja: http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4
Właśnie dlatego komentarze takie jak ten (które wszyscy prawdopodobnie robiliśmy co jakiś czas) są złe pomysł:
Prawda: jestem zbyt leniwy, aby powiedzieć, ile komentarzy jest reprezentowanych przez powyższe zanieczyszczenie tagami, ale jest to co najmniej 10.
Oczywiście nie do końca to takie proste ze względu na różnice w sposobie interpretowania specyfikacji przez każdą przeglądarkę.
Oto doskonały artykuł, który to wyjaśnia:
http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html
Długa odpowiedź: dlaczego się mylimy
Większość z nas, którzy dorastali w HTML (bez zagłębiania się w SGML, który jest jego podstawą)), doszła do wniosku, że ciąg <!-- rozpoczyna komentarz, a ciąg -->kończy komentarz.
Właściwie <!i >ogranicz deklarację SGML w dokumencie HTML, taką jak deklaracja DOCTYPE, którą wszyscy widzieliśmy na górze naszych stron. W ciągu deklaracji SGML komentarze są rozdzielane podwójnymi myślnikami. Tak więc komentarz HTML
który większość z nas uważa, że jest analizowany w ten sposób, <!-- this is a comment -->jest analizowany w ten sposób:
<!-- this is a comment --> . Jest to deklaracja SGML, która jest pusta z wyjątkiem komentarza.
Ponieważ HTML jest formą SGML, ten „komentarz w deklaracji” funkcjonuje jako komentarz HTML.
Z ciekawości, oto fragment czystego SGML, który pokazuje komentarze działające tak, jak były zamierzone w SGML: ta definicja listy atrybutów zawiera komentarz do każdej linii:
źródło
Nie da się tego zrobić.
-->
zawsze zakończy istniejący komentarz HTML.źródło
Jeśli naprawdę utkniesz z jakimś fragmentem HTML - wstępnie wyrenderowanym w jakimś niekontrolowanym źródle - który zawiera komentarze i musisz upewnić się, że żaden z nich nie jest renderowany na twojej stronie, zawsze możesz owinąć go
script
tagiem jak poniżej, chodzi tylko o to, że wscript
ten sposób nie można komentować tagów.<p>some text</p> <!-- multiline "comment" below using script type="text/html" --> <script type="text/html"> <p>commented out html</p> <!-- comment 2 // are nested html comment allowed? end of comment 2 --> <p>more commented out html</p> </script> <p>some more text</p>
Jeśli chcesz zakomentować
script
tagi, możesztextarea
zamiast tego użyć opakowania as, oczywiście robiąc to w ten sposób, nie możesz komentowaćtextarea
tagów.<p>some text</p> <!-- multiline "comment" below using textarea style="display:none;" --> <textarea style="display:none;"> <script> alert("which won't show up.."); </script> <p>commented out html</p> <!-- comment 2 // are nested html comment allowed? end of comment 2 --> <p>more commented out html</p> </textarea> <p>some more text</p>
źródło
/* */
Użyj
template
tagu. Najszybszy sposób na zablokowanie wyświetlania wszystkich komentarzy i innych treści HTML.<template> <!-- first paragraph--> Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <!-- second paragraph--> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </template> <!-- third paragraph--> Ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.sunt in culpa qui officia deserunt mollit.
źródło
<template>
Element nie może być po prostu dodany w dowolnym miejscu. Jego elementem nadrzędnym musi być<body>
element lub kilka innych wybranych .Niektórzy redaktorzy mają polecenia komentowania / usuwania komentarzy, które mogą automatycznie obsługiwać istniejące komentarze w bloku tekstu. Visual Studio np. Robi to po naciśnięciu Ctrl + KC i Ctrl + KU.
źródło
Dodatek VS, który fałszuje zagnieżdżone komentarze, automatycznie konwertując
<!--...-->
do<!~~...~~>
następnie komentuje, że całej sekcji. Pozwala to włączać i wyłączać.komentarze zagnieżdżone
źródło
Myślę, że nie jest to dozwolone, ale o ile wiem, działa w większości głównych przeglądarek z wyjątkiem Firefoksa.
źródło
spróbuj tego użyć
<!--
to jest początek komentarza
<%-- this is another comment --%> <%-- this is another one --%>
-->
koniec komentarzy.źródło
Spróbuj tego
<p>some text</p> <comment> comment 1 <p>commented out html</p> <!-- comment 2 // are nested html comment allowed? end of comment 2 --> <p>more commented out html</p> end of comment 1 </comment> <p>some more text</p>
źródło
<comment>
słowa kluczowego w HTML