来自Richard Kiessig的超快asp.net书,
主题部分不能包含任何导致浏览器在屏幕上绘制内容的标记,用户会在下载部分中的所有资源之前看到注意事项。
- 他在这句话中提到了什么?
<HEAD runat ="server">
<title>WebForm1</title>
<h1> Hi </h1>
</HEAD>
浏览器正在关闭'hi'。
答案 0 :(得分:3)
h1
内的 head
是无效的HTML。这个不允许。但是,如果网络浏览器的制作者拒绝每个无效的HTML文档,大约90%(甚至更多)的网站都不会向用户显示。
因此,一位浏览器制作人构建了一个能够呈现无效网站的浏览器,并且所有用户都开始使用此浏览器。因此,正确的网络浏览器的制作者没有其他机会。他们还构建了可以呈现无效html的浏览器。因此,所有正在使用的Web浏览器都是能够呈现无效html的浏览器。
BUT:
没有关于如何呈现无效html的标准。因此,每个制作人都有自己关于如何显示无效文档的想法,因此,当您编写无效的html时,您可以获得好运,并且文档在您用于开发和测试的浏览器中看起来很好。但是,您网站的用户不仅使用您的浏览器。他们使用所有可用的浏览器,如果你的html代码无效,那么很有可能很多用户使用你不知道的浏览器,而且这个浏览器不显示你想要的东西,但是有些垃圾。
Conclusio:
答案 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支持,不支持它。 ; - )