在内部样式表中使用HTML注释标签

4

可能是重复问题:
在HTML文档中注释样式表以支持旧浏览器

我正在阅读Wrox出版的Professional ASP.NET 2.0。请参见下面的代码。

    <head>
    <style type="text/css">

    <!--

    body {
    font-family:Verdana;
    }

    -->
    </style>
 </head>

以下内容摘自书籍:

包含HTML注释标签是因为不是所有浏览器都支持内部样式表。通常是老旧的浏览器不能接受它们。在样式定义周围放置HTML注释可以隐藏这些定义,使得非常老的浏览器看不到它们。

现在我的问题是,为什么只有老版本的浏览器会受到注释对内容的影响,新版的浏览器不会受到影响吗?


那本书已经有7年的历史了,而ASP.NET已经更新到4.5版本。我认为它在今天并不是一个特别有用的资源。 - Quentin
2个回答

6

旧版(或者说古老的)浏览器无法识别<style>标签,因此将其视为其他未知元素并将其内容视为HTML。该注释被视为注释,因此不会呈现任何内容。

支持<style>标签的浏览器可以将其内容视为CSS并忽略HTML注释(根据规范)。


如果注释被视为注释,那么注释之间的内容如何对浏览器可见? - Ravindra Bagale
@RavindraBagale - 它们只在任何评论可见的意义上可见。它们没有被渲染,这就是重点。 - Quentin

2
这种技术是内置于新浏览器支持的内联样式表中的一种方法。它只是一个规则,在内部样式表中,HTML注释定界符(<!---->)被忽略,因此该方法将起作用。(如果我没记错,它们只在样式表的开头和结尾处被忽略,但我不完全确定。)
在旧版浏览器中,它不知道如何处理脚本标签,因此会直接将其放在页面上。然而,它里面什么也没有,只有一个注释,所以用户看不到任何东西。如果您确实想在CSS中使用注释,请使用CSS注释样式(/**/)。
还请注意,这种方法存在于非常老旧的浏览器中。这种技术现在已经不太常见了,我敢说也不再必要了(那么老的浏览器可能无法正确显示您的页面)。

“那些过于陈旧的浏览器无论如何都无法正确地显示您的页面。”这并不一定是真的(特别是如果页面很简单或者设计时考虑了向后兼容性)。我的网站在 Netscape 1 中几乎可以正常工作。 - JustinCB
@JustinC.B. 在大多数情况下,确保这样做是不值得的。毕竟,真的有人会疯狂到使用 Netscape 1 访问您的页面吗?如果是这样,他们是否会为了您的网站而更换浏览器,因为许多其他网站在该浏览器中无法正常工作。我在句子中添加了“可能”一词,以表明这可能并不适用于所有人。 - Jasper
通常情况下,在Netscape 1中网站不能正常工作的原因是由于复杂的样式、Javascript或表格过多。简单而优雅的网站在几乎所有浏览器中都能展现良好(而不好看的浏览器一般都不好看)。 - JustinCB

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