来自 Richard Kiessig 的超快速 asp.net 书籍,
头部分不能包含任何导致浏览器在屏幕上绘制内容的标签,用户将看到注意,直到它下载了该部分中的所有资源。
——他从这句话中指的是什么?
<HEAD runat ="server">
<title>WebForm1</title>
<h1> Hi </h1>
</HEAD>
浏览器正在播放“嗨”。
来自 Richard Kiessig 的超快速 asp.net 书籍,
头部分不能包含任何导致浏览器在屏幕上绘制内容的标签,用户将看到注意,直到它下载了该部分中的所有资源。
——他从这句话中指的是什么?
<HEAD runat ="server">
<title>WebForm1</title>
<h1> Hi </h1>
</HEAD>
浏览器正在播放“嗨”。
h1
里面head
是无效的html。不允许。但是,如果网络浏览器的生产者拒绝所有无效的 html 文档,大约 90%(甚至更多)的网站将不会显示给用户。
于是,一个浏览器生产商开发了一个浏览器,它也可以渲染无效的网站,所有的用户都开始使用这个浏览器。因此,正确的网络浏览器的生产者没有其他机会。他们还构建了可以呈现无效 html 的浏览器。正因为如此,所有正在使用的网络浏览器都是能够呈现无效 html 的浏览器。
但:
没有关于如何呈现无效 html 的标准定义。所以每个生产者对于如何显示无效文档都有自己的想法,因此,当您编写无效的 html 时,您可能会很幸运,并且该文档在您用于开发和测试的浏览器中看起来很好。但是您网站的用户不仅使用您的浏览器。他们使用所有可用的浏览器,如果您的 html 代码无效,那么很有可能很多用户使用您不知道的浏览器,并且该浏览器不会显示您想要的内容,而是一些垃圾。
结论:
声明“头部部分不能包含任何导致浏览器在屏幕上绘制内容的标签,用户将看到注意,直到它下载了该部分中的所有资源。” 最好忽略;它只会引起混乱并且缺乏意义。试图纠正其中的错误需要很长时间,而且不会真正导致任何结果。
关于无效标记的处理
<HEAD runat ="server">
<title>WebForm1</title>
<h1> Hi </h1>
</HEAD>
简单的答案是,当浏览器在解析元素时遇到时,它们的解析器会暗示一个结束</head>
标签和一个开始标签。这完全符合 HTML 规范。<body>
<h1>
head
在片段中,除了runat ="server"
根本不希望传递给客户端的属性(它是 ASP 而不是 HTML)之外,唯一无效的东西是虚假的结束标记</HEAD>
。元素已经关闭,head
不能再次关闭。
是的,当然<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 的支持。;-)