согласно названию; возможно ли иметь вложенные комментарии в действительный HTML? см. пример ниже...
<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>
Не похоже, кто-нибудь знает, как я могу заставить вложенные комментарии работать?
Ответ 1
Когда вы вставляете комментарий, замените "-" на "- -". Когда вы разблокируете, отмените процедуру. Это запрещено <!--
, но --
.
Ответ 2
TL; DR: К сожалению, нет, это невозможно (и никогда не будет).
Короткий ответ:
Комментарий HTML не совсем то, что многие считают. HTML - это форма SGML, в которой комментарии разделены парами двойных штрихов (--... --).
Таким образом, любая пара двойных штрихов внутри пары угловых скобок с восклицательным знаком после открывающей скобки (<! -- ⋯ -- >) является комментарием. Спектр говорит об этом лучше, чем я могу: http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4
Вот почему комментарии вроде этого (которые мы все, вероятно, выполняются один или другой) - это идея bad:
<!-- ------------------ HEADER BEGINS HERE -------------------- -->
Правда: я слишком ленив, чтобы рассказать вам, сколько комментариев представлено вышеупомянутым загрязнением тега, но оно не менее 10.
Я стал менее ленивым: этот так называемый "комментарий" фактически состоит из 10 комментариев, три слова за пределами каких-либо комментариев (т.е. только плохой SGML), и начало комментария, который не завершен. Это настоящий беспорядок:
<!--1----2----3----4----5--
HEADER BEGINS HERE
--6----7----8----9----10-- -->
Конечно, это не так просто, из-за различий в том, как каждый браузер предпочитает интерпретировать спецификацию.
Вот отличная статья, которая объясняет это:
http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html
Длинный ответ: почему мы ошибаемся
Большинство из нас, кто вырос с HTML (без вникания в SGML, который лежит в основе этого), пришли к выводу, что строка <!-- начинает комментарий, а строка --> завершает комментарий.
Фактически, <! и > ограничивают объявление SGML в вашем документе HTML, например декларацию DOCTYPE, которую мы все видели в верхней части наших страниц. В декларации SGML комментарии разделяются двойными тире. Таким образом, комментарий HTML
<!-- this is a comment -->
который, по мнению большинства из нас, будет проанализирован следующим образом: <!-- this is a comment --> фактически разбирается следующим образом:
<! -- this is a comment -- >. Это объявление SGML, пустое, за исключением комментария.
Поскольку HTML является формой SGML, этот "комментарий в объявлении" функционирует как комментарий HTML.
Из интереса, здесь кусок чистого SGML, который показывает комментарии, функционирующие так, как они были предназначены в SGML: это определение списка атрибутов содержит комментарий к каждой строке:
<!ATTLIST LINK
%attrs; -- %coreattrs, %i18n, %events --
charset %Charset; #IMPLIED -- char encoding of linked resource --
href %URI; #IMPLIED -- URI for linked resource --
hreflang %LanguageCode; #IMPLIED -- language code --
type %ContentType; #IMPLIED -- advisory content type --
rel %LinkTypes; #IMPLIED -- forward link types --
rev %LinkTypes; #IMPLIED -- reverse link types --
media %MediaDesc; #IMPLIED -- for rendering on these media --
>
Ответ 3
Это невозможно. -->
всегда будет заканчивать существующий комментарий HTML.
Ответ 4
Некоторые редакторы имеют команды комментирования/расторжения, которые могут автоматически обрабатывать существующие комментарии в блоке текста. Visual Studio, например. делает это, когда вы нажимаете Ctrl + KC и Ctrl + KU.
Ответ 5
Если вы действительно застряли с какой-то частью HTML - предварительно обработанной в некотором неконтролируемом источнике - который содержит комментарии, и вам нужно убедиться, что ни одна из них не отображается на вашей странице, вы всегда можете обернуть ее с помощью script
, как показано ниже, единственное, что вы не можете прокомментировать теги script
таким образом.
<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>
Ответ 6
Я думаю, что это запрещено, но насколько я знаю, он работает в большинстве основных браузеров, кроме Firefox.
Ответ 7
попробуйте использовать
<!--
это начало комментария
<%-- this is another comment --%>
<%-- this is another one --%>
-->
конец комментариев.
Ответ 8
Попробуйте это
<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>