Cant Head部分包含任何标签?

时间:2012-04-07 07:03:23

标签: html

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

主题部分不能包含任何导致浏览器在屏幕上绘制内容的标记,用户会在下载部分中的所有资源之前看到注意事项。

- 他在这句话中提到了什么?

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

浏览器正在关闭'hi'。

3 个答案:

答案 0 :(得分:3)

h1内的

head是无效的HTML。这个不允许。但是,如果网络浏览器的制作者拒绝每个无效的HTML文档,大约90%(甚至更多)的网站都不会向用户显示。

因此,一位浏览器制作人构建了一个能够呈现无效网站的浏览器,并且所有用户都开始使用此浏览器。因此,正确的网络浏览器的制作者没有其他机会。他们还构建了可以呈现无效html的浏览器。因此,所有正在使用的Web浏览器都是能够呈现无效html的浏览器。

BUT:

没有关于如何呈现无效html的标准。因此,每个制作人都有自己关于如何显示无效文档的想法,因此,当您编写无效的html时,您可以获得好运,并且文档在您用于开发和测试的浏览器中看起来很好。但是,您网站的用户不仅使用您的浏览器。他们使用所有可用的浏览器,如果你的html代码无效,那么很有可能很多用户使用你不知道的浏览器,而且这个浏览器不显示你想要的东西,但是有些垃圾。

Conclusio:

  • 非常好的Web浏览器的制作者必须生成可以渲染任何垃圾的浏览器。
  • 非常好的html文档的制作者必须使用有效的HTML。

答案 1 :(得分:2)

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

关于无效标记的处理

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

简单的答案是,在解析</head>元素时,浏览器会遇到<body>标记和开放<h1>标记的解析器。这完全符合HTML规范。

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

答案 2 :(得分: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>

在IE9评论中,它为IE 8及以下版本添加了HTML5支持,不支持它。 ; - )