Возможны ли вложенные комментарии HTML?

согласно названию; возможно ли иметь вложенные комментарии в действительный 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>