1

来自 Richard Kiessig 的超快速 asp.net 书籍,

头部分不能包含任何导致浏览器在屏幕上绘制内容的标签,用户将看到注意,直到它下载了该部分中的所有资源。

——他从这句话中指的是什么?

<HEAD runat ="server">
        <title>WebForm1</title>
        <h1> Hi </h1>
    </HEAD>

浏览器正在播放“嗨”。

4

3 回答 3

3

h1里面head是无效的html。不允许。但是,如果网络浏览器的生产者拒绝所有无效的 html 文档,大约 90%(甚至更多)的网站将不会显示给用户。

于是,一个浏览器生产商开发了一个浏览器,它也可以渲染无效的网站,所有的用户都开始使用这个浏览器。因此,正确的网络浏览器的生产者没有其他机会。他们还构建了可以呈现无效 html 的浏览器。正因为如此,所有正在使用的网络浏览器都是能够呈现无效 html 的浏览器。

但:

没有关于如何呈现无效 html 的标准定义。所以每个生产者对于如何显示无效文档都有自己的想法,因此,当您编写无效的 html 时,您可能会很幸运,并且该文档在您用于开发和测试的浏览器中看起来很好。但是您网站的用户不仅使用您的浏览器。他们使用所有可用的浏览器,如果您的 html 代码无效,那么很有可能很多用户使用您不知道的浏览器,并且该浏览器不会显示您想要的内容,而是一些垃圾。

结论:

  • 真正优秀的 Web 浏览器的生产者必须生产可以呈现任何垃圾的浏览器。
  • 真正好的 html 文档的生产者必须产生有效的 html。
于 2012-04-07T07:24:28.950 回答
2

声明“头部部分不能包含任何导致浏览器在屏幕上绘制内容的标签,用户将看到注意,直到它下载了该部分中的所有资源。” 最好忽略;它只会引起混乱并且缺乏意义。试图纠正其中的错误需要很长时间,而且不会真正导致任何结果。

关于无效标记的处理

<HEAD runat ="server">
        <title>WebForm1</title>
        <h1> Hi </h1>
    </HEAD>

简单的答案是,当浏览器在解析元素时遇到时,它们的解析器会暗示一个结束</head>标签和一个开始标签。这完全符合 HTML 规范。<body><h1>head

在片段中,除了runat ="server"根本不希望传递给客户端的属性(它是 ASP 而不是 HTML)之外,唯一无效的东西是虚假的结束标记</HEAD>。元素已经关闭,head不能再次关闭。

于 2012-04-07T10:26:09.197 回答
1

是的,当然<head></head>可以包含默认情况下带有该display:none;属性的所有标签。这些是 和 之类的<meta>元素<title>。但<h1>必须在屏幕上渲染,它是display:inline;. 但大多数元素不是display:none;,应该放在该<body></body>部分中。

那时它不会通过 w3c 进行验证,因此您违反了 Web 标准。但是,它应该在所有现代浏览器中都可以正常呈现。大多数人会说您希望在构建网页时保持组织和质量,其中一部分是确保您的代码是正确的语法。

ETA:标准 HTML5 标记...

<!DOCTYPE html>
<html>
    <head>
        <title>My Title</title>
        <!--[if lt IE 9]>
            <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>
    <body>
        <header>
        </header>

        <section>
        </section>

        <footer>
        </footer>
    </body>

</html>

在那个 lt IE9 评论中,它添加了对 IE 8 及以下不支持它的 HTML5 的支持。;-)

于 2012-04-07T07:05:34.970 回答