在HTML中,将注释放在<html>标签之外是否可行?

17

W3c验证器没有对此进行指责,但我想知道是否有其他人对将HTML注释放在HTML标签外面有意见?

...
</body>
</html>
<!-- 再见 -->

我有一个应用程序,正在输出一些数据,并希望它是最后完成的事情,不幸的是,这意味着我已经添加了我的最后一个 </html> 标签。

6个回答

18

我认为这不会是一个问题 - DTD中没有指定允许的注释(因为它们实际上是给人看的,而不是计算机)。此外,DOM API (http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html)明确允许将许多注释直接放在文档节点下面(即不是根HTML元素,而是逻辑文档根),所以任何符合标准的浏览器都应该允许注释。

这并不意味着你不会遇到一些浏览器或工具,特别是旧版本的,可能无法支持。但如果有的话,我会感到惊讶。


3
我还没有看到任何浏览器对此进行抱怨。只是出于好奇,我在古老的Mosaic 2.1.1(来自1996年!)上进行了测试,即使是这个非常老的浏览器也没有抱怨。 - some

14

我不认为在</html>标签后面添加注释会引起任何问题,但我认为在DOCTYPE声明之前(也就是在<html>标签之前)添加注释会导致IE6进入怪异模式。


3
这实际上影响的不仅仅是IE6。在这里有一个长篇讨论,解释为什么W3不会将这个无效的HTML标记为错误:http://www.w3.org/Bugs/Public/show_bug.cgi?id=12072 - benrifkah

1
任何客户端都应完全忽略注释,因此它们不应引起任何问题。无论如何,如果验证器没有抱怨,那可能没问题。

1
如果您正在使用AngularJS并创建一个.directive,其中replace为true,则HTML片段中根元素外的注释会导致Angular看到两个根元素并引发此错误。 指令“yourDirective”的模板必须具有确切的一个根元素。

0
我曾经有一家SEO公司在客户的网站上工作,决定在我的PHP包含文件中添加一个HTML注释,该注释位于HTML标签之外,在Internet Explorer中引起了问题。它导致我的下拉菜单出现了一系列格式问题。这是毫无意义的,为什么会破坏,但绝对是由注释引起的。一旦删除注释,所有问题都恢复正常。

除非您可以展示演示,否则应将该描述视为虚假警报;问题是由其他原因引起的(比如注释语法错误,容易犯)。 - Jukka K. Korpela
@Eric,这是哪个版本的IE浏览器? - Pacerier

-1

是的,无论如何。任何渲染引擎(IE、Firefix、Opera、Safari等)都会完全忽略任何HTML注释标记,无论其位置。


1
这并不完全正确,因为IE会解析注释以进行条件语句。请参见:"http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx" - Zack The Human
从Internet Explorer 10开始,条件注释在标准模式下不再受支持,这意味着IE可能不再是一个问题了。 - Mat Lipe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接