【发布时间】:2011-08-21 01:26:06
【问题描述】:
当我尝试这个时
<option disabled = "disabled" <!-- Used to disable any particular option -->
selected = "selected" <!-- Used to pre-select any particular option -->
label = "string" <!-- Used to provide a short version of the content in the option -->
value = "value"> <!-- The actual value that will be send to the server. If omitted the content between the option opening and closing tags will be send. -->
Option 1
</option>
我试图在元素的开始标签内注释属性和值。但是,这不起作用,因为浏览器(在 IE9、FF4.01、GG11、AF5 和 Opera11 上测试)将 disabled="disabled" 之后的所有内容视为评论或内容。
HTMl Comments 是否不允许在元素的开始标签内?
【问题讨论】:
-
正如大卫所指出的,您不能将 cmets 放在另一个标签中。此外,您不需要注释 html 标签,因为它们是自描述的。您无需向阅读代码的人解释算法。所以它们有点多余和毫无意义。
-
某人想要在标签内添加评论的原因不是他们想要记录正在发生的事情,而是他们可能想要在开发过程中禁用属性而不删除它。
-
嵌套 cmets 有一个非常严重的用例,但经常被忽视。如果不剥离该块内的 cmets,则无法注释掉其中包含块注释的代码块。除了兼容性问题,cmets 没有理由不嵌套,因为从本质上讲,它只是一种“括号匹配”算法,将括号内的所有内容都去掉。这将使评论删除算法更加昂贵(它不能再简单地使用正则表达式,它现在必须解析每条评论),但回报是 cmets 现在不会对未来的 cmets 造成破坏。
-
我的建议是使用
<noscript class="comment">comment</noscript>,它没有<!-- -->的限制,然后在文档开始解析它之前,让javascript 将它的outerHTML 设置为一个空字符串。 noscript 是首选,因为它是除了 script 之外唯一没有意义的标准标签。