html注释不能交叉嵌套,嵌套的HTML注释是否可行?

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

简短回答:

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

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

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

&lt ;! - ------------------ HEADER BEGINS HERE -------------------- - >

真相:我太懒了,不能告诉你上面的标签污染有多少评论,但它至少是10。

我不那么懒了:这个所谓的“评论”实际上包含10条评论,

任何评论之外的三个词(即刚刚坏的SGML),以及

未终止的评论的开头。这真是一团糟:

<! - 1 ---- 2 ---- ---- 3 4 ---- 5--

HEADER从这开始

--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评论

<! - 这是评论 - >

我们大多数人都会相信这样解析<! - 这是评论 - >实际上解析如下:

<! - 这是评论 - >。除了注释之外,它是一个空的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 - 用于在这些媒体上呈现 -

>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值