我一直想知道在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中有几个空行。
不是一个大问题。我一直想知道它是否重要:)
答案 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文档中标记之前的第一件事。
答案 5 :(得分:0)