是否可以嵌套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>

它似乎不是,有人知道我如何能嵌套评论工作?


嵌套评论时,请将“ - ”替换为“ - - ”。 当您取消嵌套时,请反转该程序。 这不是<!--这是被禁止的,但是--


TL; DR :不幸的是,不,这是不可能的(并且永远不会)。

简短的回答:

HTML评论并不是很多人认为的。 HTML是SGML的一种形式,其中评论由双破折号( - ... - )分隔。

因此,在括号后面带有感叹号的一对尖括号内的任何双破折号(<! - ⋯ - >)都是注释。 规范说明它比我更好:http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4

这就是为什么像这样的评论(我们可能做过这样或那样的评论)是一个主意:

<!-- ------------------ HEADER BEGINS HERE -------------------- -->

真相:我懒得告诉你上述标签污染有多少评论,但至少有10条。

我没那么懒惰:这个所谓的“评论”实际上包含10条评论,3条评论之外的任何评论(即,仅仅是坏的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)都相信字符串<! - 开始注释,字符串 - >结束注释。

其实,<! 并>在HTML文档中定义一个SGML声明,例如我们在页面顶部看到的DOCTYPE声明。 在SGML声明中,评论用双划线分隔。 因此,HTML评论

<!-- 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 --
>

它不能做到。 -->将始终结束现有的HTML注释。

链接地址: http://www.djcxy.com/p/20141.html

上一篇: Are nested HTML comments possible?

下一篇: How to add code comments in markdown that DO NOT render into html?