Возможны ли вложенные комментарии 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>
Похоже, нет, кто-нибудь знает, как я могу получить вложенные комментарии для работы?
11 ответов
Когда вы вложите комментарий, замените "-" на "- -". Когда вы удалите гнездо, выполните обратную процедуру. Это не <!--
это запрещено, но --
,
Пример:
<!-- some stuff
<!- - some inner stuff - ->
<!- - a sibling - ->
the footer -->
TL; DR: К сожалению, нет, это невозможно (и никогда не будет).
Короткий ответ:
HTML-комментарий не совсем то, что многие думают. HTML - это форма SGML, в которой комментарии разделяются парами двойных черточек (- … -).
Таким образом, любая пара двойных черточек внутри пары угловых скобок с восклицательным знаком после открывающей скобки ( - ⋯ - >) является комментарием. Спецификация говорит это лучше, чем я могу: http://www.w3.org/TR/html4/intro/sgmltut.html
Вот почему подобные комментарии (которые мы, вероятно, все время делали) плохая идея:
Правда: мне лень сообщать вам, сколько комментариев представлено вышеупомянутым загрязнением тега, но это как минимум 10.
Я стал менее ленивым: этот так называемый "комментарий" на самом деле состоит из 10 комментариев, трех слов вне любого комментария (т. Е. Просто плохой SGML) и начала комментария, который не заканчивается. Это настоящий беспорядок
- 1 - - 2 - - 3 - - 4 - - 5 - ЖАТКА НАЧИНАЕТСЯ ЗДЕСЬ - 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-комментарий
что большинство из нас поверит, что анализируется следующим образом это комментарий -> фактически анализируется так:
- это комментарий - >. Это объявление SGML, которое является пустым, за исключением комментария.
Поскольку HTML является формой SGML, этот "комментарий внутри объявления" функционирует как комментарий HTML.
Из интереса вот кусок чистого SGML, который показывает комментарии, функционирующие так, как они были предназначены в SGML: это определение списка атрибутов содержит комментарий в каждой строке:
Если вы действительно застряли с каким-то фрагментом 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>
Если вам нужно закомментировать script
теги, вы можете использовать textarea
как обертка, конечно, делая это таким образом, вы не можете закомментировать textarea
теги.
<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>
Использование template
тег. Самый быстрый способ заблокировать все комментарии и другие 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.
Это не может быть сделано. -->
всегда заканчивает существующий HTML-комментарий.
Вложенные комментарии HTML
<!-- comment1 <!-- comment2--> -->
НЕ допускаются.
Но вы могли бы добиться, используя
<script>
тег и
/* */
(Хакерское решение):
<script>
/*
HTML code you want to comment on goes between the Javascript comment section
*/
</script>
Пример: ниже комментарии
Some Statement 2, 3, 4, 5 and 6
<p> Some Statement 1 </p>
<script>
/*
<p> Some Statement 2 </p>
<!-- explanation about below statement 3 by the comment tag -->
<p> Some Statement 3 </p>
<!--
<p> Some Statement 4 </p>
<p> Some Statement 5 </p>
-->
<p> Some Statement 6 </p>
*/
</script>
<p> Some Statement 7 </p>
Надстройка VS, которая подделывает вложенные комментарии путем автоматического преобразования <!--...-->
в <!~~...~~>
затем комментирует весь этот раздел. Это позволяет вам включать и выключать его.
Попробуйте использовать это
<!--
это начало комментария
<%-- this is another comment --%>
<%-- this is another one --%>
-->
конец комментариев.
Некоторые редакторы имеют комментирующие / раскомментирующие команды, которые могут автоматически обрабатывать существующие комментарии в блоке текста. Visual Studio, например, делает это, когда вы нажимаете Ctrl+KC и Ctrl+KU.
Попробуй это
<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>
Я думаю, что это не разрешено, но, насколько я знаю, это работает в большинстве основных браузеров, кроме Firefox.