HTML中的单行注释


74

有没有办法在行的开头仅使用转义序列来注释掉HTML中的一行?类似于使用#还是//其他语言?还是<!-- ... -->用html注释的唯一选项?


TL; DR: <!-- -->编号
安德鲁

Answers:


75

来自http://htmlhelp.com/reference/wilbur/misc/comment.html

由于HTML正式是SGML应用程序,因此HTML文档中使用的注释语法实际上是SGML注释语法。不幸的是,这种语法起初有点不清楚。

SGML注释的定义基本上如下:

一个注释声明打头<!,后跟零个或更多的评论,其次是 >。一个注释 开始和结束以“ --”,并且不包含任何出现“ --”。
这意味着以下是SGML的所有合法注释:
  1. <!-- Hello -->
  2. <!-- Hello -- -- Hello-->
  3. <!---->
  4. <!------ Hello -->
  5. <!>
请注意,只有“ --”字符的“空”注释标记应始终具有四个-字符的倍数才合法。(是的, <!>这也是法律评论-这是空的评论)。

并非所有的HTML解析器都正确。例如,“ <!------> hello-->”是法律注释,您可以使用上述规则进行验证。这是一个带有两个评论的评论标签;第一个为空,第二个为“> hello”。如果在浏览器中尝试,则会发现文本显示在屏幕上。

可能有两个原因:

  1. 浏览器看到“>”字符,并认为注释到此结束。
  2. 浏览器会看到“ -->”文本,并认为注释到此结束。
--”序列也存在问题。有些人习惯<!-------------->在源代码中使用“ ”之类的分隔符。不幸的是,在大多数情况下,“ -”字符的数量不是四个的倍数。这意味着试图 解决问题的浏览器实际上在这里会 出错,并实际上隐藏了文档的其余部分。

因此,请使用以下简单规则来撰写有效和可接受的注释:

HTML注释以“ <!--”开头,以“ ”结尾,-->并且注释中的任何地方都不包含“ --”或“ >”。


5
有趣的是,我不知道这<!>是一个有效的评论。我只是为了兼容性而避免这样的事情
Matti Virkkunen

感谢您的详尽回答。我认为没有办法做到这一点,但我想问起来也不会感到无所适从。现在,我对评论有了更多了解,并且避免<!-- -------blah------ -->了我认为还可以的事情,因为开始和结束“-”。
aslum

2
AFAIK HTML5已不再使用SGML注释语法,因为它不再基于SGML。
于洪宝,

1
Downvote并未真正解决问题,而是提供了大量无关的细节。
安德鲁

1
@aslum这不能回答问题。完全没有
安德鲁


8

让我们保持简单。喜欢@digitaldreamer的答案,但可能会使初学者感到困惑。因此,我将尝试简化它。

唯一的HTML注释是<!-- -->它可以用作单行注释或双行注释,这实际上取决于开发人员。

因此,HTML注释以<!--和开头-->。真的就是这么简单。即使注释格式合法,也不应使用任何其他格式来避免任何兼容性问题。



3

TL; DR对于兼容的浏览器,是的;但是没有兼容的浏览器,所以没有。

根据HTML 4规范,<!------> hello-->是完全有效的注释。但是,由于开发人员不了解或不遵循标准(如digitaldreamer指出的那样),因此我没有找到能够正确(即按照规范)正确实现此功能的浏览器。

您可以在w3c的网站上找到HTML4注释的定义:http : //www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4

许多浏览器都会出错的另一件事是-- >像一样关闭评论-->


1
对于“符合要求的浏览器”,这意味着什么呢?正确的答案是“对于兼容的浏览器,不是;但是对于实际的浏览器,也没有。”
尼克·马特奥
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.