我的HTML5文档类型是否必须在第一行?

时间:2012-06-07 02:26:57

标签: asp.net html html5-video doctype

我一直想知道在DOCTYPE问题之前是否空白,但我似乎无法在网上找到任何明确的信息。人们说不要这样做,但我看不出它可能会产生什么影响,或者即使规范说它必须是这样的。我无法弄清楚它是否会触发IE中的兼容模式或类似的烦人行为。

原因是,在我的(糟糕的asp.net)代码中,我更愿意写:

<%@ Page language="c#" Codepage="65001" AutoEventWireup="true" %>
<%@ OutputCache Location="None" VaryByParam="none" %>
<!doctype html>

比:

<%@ Page language="c#" Codepage="65001" AutoEventWireup="true" %><%@ OutputCache Location="None" VaryByParam="none" %><!doctype html>

因为第一个更整洁。但是顶部的结果是渲染的html中有几个空行。

不是一个大问题。我一直想知道它是否重要:)

6 个答案:

答案 0 :(得分:24)

如果您需要官方答案,请访问W3C的官方文档并阅读其中的语法。

评论和空格可能首先出现。

以下是链接:http://www.w3.org/TR/html-markup/documents.html#conformant-documents

答案 1 :(得分:8)

偶尔会有一些浏览器在doctype之前出现空白问题 - 经典的例子是IE6,据说它在进入怪癖模式时就会出现问题。事实证明,这仅适用于某些非常特殊类型的空白(例如,不可破坏的空间,例如)。也就是说,IE6兼容性在大多数人的优先级列表中并不高。

答案 2 :(得分:4)

为了最大化避免Quirks模式的几率,请将doctype声明放在HTML文档的最开头。你不会发现任何官方声明,因为Quirks Mode是违反标准和实际的浏览器行为。这是Quirks模式的一部分,它基本上没有文档;作者不应该相信它。这意味着让遗留页面的行为能够容忍(就像以前一样),而不是你应该用于新页面的东西。

现代浏览器通常在doctype,注释或XML声明之前允许空行,而不使用Quirks模式。但是,除非你有令人信服的理由,否则不要在那里放任何东西。

答案 3 :(得分:4)

请注意,由Ray链接的HTML规范是错误的。虽然在DOCTYPE之前允许使用空格,但规范说明也可以在DOCTYPE之前发表评论。但这在Internet Explorer 9及更早版本中不起作用。

答案 4 :(得分:1)

不,Doctype不一定是文件的第一行,但必须在<html>标记之前。这是你唯一的限制,所以你的第一种方法就可以了。

  

声明必须是HTML文档中标记之前的第一件事。

     

来自:w3 schools (doctypes)

答案 5 :(得分:0)

实际上,实际建议是将包含<meta charset="UTF-8">语句的初始文本限制为1024个字节。这是由于某些浏览器需要使用有限的预扫描来快速确定字符编码(如果缺少字符编码标头)。

有关详细信息,请参见W3CSivonen