web-dev-qa-db-ja.com

ネストされた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>

ネストされたコメントを機能させる方法を知っている人はいないでしょうか?

88
QAZ

コメントをネストする場合、「-」を「--」に置き換えます。ネストを解除するときは、手順を逆にします。禁止されているのは<!--ではなく、--です。

例:

<!-- some stuff
<!- - some inner stuff - ->
<!- - a sibling - ->
the footer -->
92
Aaron Digulla

TL; DR:残念ながら、いいえ、不可能です(不可能です)。

短い答え:

HTMLコメントは、多くの人が思っているほどではありません。 HTMLはSGMLの形式であり、コメントは二重ダッシュのペア(-- …--)。

したがって、開き角かっこの後に感嘆符が付いた山かっこ内の二重ダッシュのペア(<!-- ⋯ -->)はコメントです。仕様には、私ができるよりも良いと書かれています: http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4

これが、このようなコメント(allが何度か行われた)がbadアイデア:

<!-------------------ヘッダーはここから始まります--------------------->

真実:上記のタグ汚染によって表されるコメントの数を伝えるのは面倒ですが、少なくとも10です。

怠laが少なくなりました:このいわゆる「コメント」は、実際には10個のコメント、コメント外の3つの単語(つまり、悪いSGML)、および終了しないコメントの始まりで構成されています。それは本当の混乱です:

<!--1----2----3----4----5--
ここからヘッダー
--6----7----8----9----10---->

もちろん、それはquiteではなく、各ブラウザーが仕様を解釈する方法の違いのためです。

これを説明する優れた記事を次に示します。

http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html

長答:なぜ間違っているのか

HTMLで育った私たちのほとんど(HTMLの根底にあるSGMLを詳しく調べることなく)は、文字列が <!-- コメントを開始し、文字列 --> コメントを終了します。

実際、 <! そして > ページの上部にあるDOCTYPE宣言など、HTMLドキュメント内のSGML宣言を区切ります。 Within SGML宣言では、コメントは二重ダッシュで区切られます。したがって、HTMLコメント

<!-これはコメントです->

私たちのほとんどは、このように解析されると信じています <!--this is a comment--> 実際には次のように解析されます:
<!--this is a comment-->。コメントを除いて空のSGML宣言です。

HTMLはSGMLの形式であるため、この「宣言内のコメント」はHTMLコメントとして機能します。

興味深いことに、SGMLで意図されたとおりに機能するコメントを示す純粋なSGMLの塊があります。この属性リストの定義には、各行にコメントが含まれています。

<!ATTLIST LINK 
%attrs; -%coreattrs、%i18n、%events-
 charset%Charset; #IMPLIED-リンクされたリソースの文字エンコーディング-
 href%URI; #IMPLIED-リンクされたリソースのURI-
 hreflang%LanguageCode; #IMPLIED-言語コード-
 type%ContentType; #IMPLIED-アドバイザリコンテンツタイプ-
 rel%LinkTypes; #IMPLIED-フォワードリンクタイプ-
 rev%LinkTypes; #IMPLIED-逆方向リンクタイプ-
 media%MediaDesc; #IMPLIED-これらのメディアでのレンダリング用-
>
93
Dave Land

できません。 -->は常に既存のHTMLコメントを終了します。

8
Sergio

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.
5
TheHive

コメントを含む制御不能なソースで事前にレンダリングされた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>
4

一部のエディターには、テキストブロック内の既存のコメントを自動的に処理できるコメント/コメント解除コマンドがあります。 Visual StudioなどCtrl + KCおよびCtrl + KUを押すと、それが行われます。

1
Dirk Vollmar

これを試して

<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>
0
txavier

ネストされたコメントを偽装するVSアドインは、<!--...--><!~~...~~>に自動的に変換し、そのセクション全体をコメント化します。オンとオフを切り替えることができます。

ネストされたコメント

0
Paul Gorbas

許可されていないと思いますが、私が知る限り、Firefoxを除くほとんどの主要なブラウザで動作します。

0
TheHippo

これを使ってみてください

<!-- 

これがコメントの始まりです

<%-- this is another comment --%>

<%-- this is another one --%>

-->コメントの終わり。

0
drw