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

似乎没有,有人知道我如何让嵌套评论起作用吗?

原文由 QAZ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 491
2 个回答

嵌套注释时,将“–”替换为“–”。当你取消嵌套时,相反的过程。禁止的不是 <!-- 而是 --

例子:

 <!-- some stuff
<!- - some inner stuff - ->
<!- - a sibling - ->
the footer -->

原文由 Aaron Digulla 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

简短回答:

HTML 注释并不像许多人想象的那样。 HTML 是 SGML 的一种形式,其中注释由成对的双破折号 ( ---- ) 分隔。

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

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

 <!-- ------------------ 标题从这里开始 ------------------ -->

真相:我懒得告诉你上面的标签污染代表了多少条评论,但至少有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](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 链接 %属性; – %coreattrs, %i18n, %events – 字符集 %字符集; #IMPLIED – 链接资源的字符编码 – href %URI; #IMPLIED – 链接资源的 URI – hreflang %语言代码; #IMPLIED – 语言代码 – 输入 %ContentType; #IMPLIED – 建议内容类型 – rel %链接类型; #IMPLIED – 前向链接类型 – 转 %链接类型; #IMPLIED – 反向链接类型 – 媒体 %MediaDesc; #IMPLIED——用于在这些媒体上渲染——

”`

原文由 Dave Land 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题