是否可以嵌套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注释。
上一篇: Are nested HTML comments possible?
下一篇: How to add code comments in markdown that DO NOT render into html?