【问题标题】:Does my HTML5 doctype have to be on the VERY first line?我的 HTML5 文档类型必须在第一行吗?
【发布时间】:2012-06-11 02:20:19
【问题描述】:

我一直想知道 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 中出现几行空行。

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

【问题讨论】:

  • 我也有类似情况:&lt;metal:page define-macro="master"&gt; &lt;tal:doctype tal:replace="structure string:&amp;lt;!DOCTYPE html&amp;gt;" /&gt;

标签: asp.net html html5-video doctype


【解决方案1】:

是的! cmets 和空格可能会排在第一位。

这是relevant section from the official HTML Specification

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    为了最大限度地避免 Quirks 模式,请将 doctype 声明放在 HTML 文档的开头。你不会找到任何官方声明,因为 Quirks Mode 是关于违反标准和关于实际浏览器行为的。这是 Quirks Mode 的一部分,它在很大程度上没有记录。作者不应该相信它。它的目的是让遗留页面的行为可以容忍(就像他们过去一样),而不是你应该用于新页面的东西。

    现代浏览器通常允许在文档类型、注释或 XML 声明之前有一个空行,而无需进入 Quirks 模式。但是不要放任何东西,除非你有令人信服的理由。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 我必须对“浏览器X版本不支持”和“规范错误”背后的逻辑提出质疑。特别是“Ray 所链接的 HTML 规范”是 w3.org 规范...
      • @KristianGlass:也许我的措辞应该与“错误”不同。也许“对 Web 开发人员没用”更好。但它并没有改变,如果你只是信任规范,你最终可能会创建一些在你可能需要支持的浏览器中不起作用的东西。
      【解决方案5】:

      不,Doctype 不必是文件的第一行,但它必须在&lt;html&gt; 标记之前。你有唯一的限制,所以你的第一种方法很好。

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

      来自:w3 schools (doctypes)

      【讨论】:

      【解决方案6】:

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

      详情请参阅W3C 和Sivonen。

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 2020-06-26
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多