不DOCTYPE宣言》必须是第一个标签,在一个HTML文档?[重复]

StackOverflow https://stackoverflow.com/questions/69828

  •  09-06-2019
  •  | 
  •  

这个问题已经有一个答案在这里:

我们的安全管理的动态插入一个位javascript在每html网页时,页面被请求通过客户。它插上述DOCTYPE发言。我认为这可能是因为布局的问题,我有。

想法的人吗?

有帮助吗?

解决方案

是的,DOCTYPE必须是第一个数据在网页上: http://www.w3schools.com/tags/tag_DOCTYPE.asp

其他提示

是的,DOCTYPE必须是第一位的。

定义是: http://www.w3.org/TR/REC-html40/struct/global.html.注意,它说,文件由三部分组成,并DTD必须是第一次。

建议HTML表示它作为一个应用程序的SGML,这需要, DOCTYPE 《宣言》出现前HTML元(忽略HTML的意见).即使没有 DOCTYPE, 添加一个 SCRIPT 元以外的 HTML 元(或者在它之前或之后)不是有效的HTML。当然,HTML有效性可能不会要求你,只要它的工作原理在大多数浏览器,然后怪癖模式切换提到将得到你:没有的 DOCTYPE, 许多浏览器将转为怪癖模式,可能是改变布局。

我假设TAM脚本段添加一些代理或其他这是不能够适当分析HTML结构的网页和插入 SCRIPT 在正确的位置 HEADBODY 该文件。在这种情况下,添加以结束的文件,而不是有效的HTML,将工作在大多数网络浏览器。

它可能的来源的问题,但!检查出"怪癖模式",因为这取决于doctype设置。进一步的研究: http://www.quirksmode.org/ 说明:你可以切换浏览器进入(主要是IE)严格的标准compilant模式,并且松散的模式。这将大大影响的渲染。谭的设置可以交换这/关闭。

我读了w3specs其中只是说,有3份来文档。的序列假设并没有明确声明的禁止,例如,一个小js snippit最前面。

我的理解是,它是可能的配置担添加js在结束dicument但不明白为什么他们把它放上面,如果它可能会导致这样显而易见的问题!

W3c(在w3.org),在一个网页上称为 html5/syntax.html, 说"一个 DOCTYPE 是一个必需的序言",其解释为意味着它是必需的,并且它必须是第一位的。

它还说,它必须包括以下部分组成,在这个秩序:

  1. 一串是一个ASCII情况不敏感的匹配的字符串 <!DOCTYPE.
  2. 一个或更多的空间符。
  3. 一串是一个ASCII情况不敏感的匹配的字符串 html.
  4. 任选一个DOCTYPE遗产串或一个过时允许DOCTYPE string(定义见下文)。
  5. 零个或更多的空间符。
  6. 一个 > (U+003E)符。

是的,doctype必须首先在文件(除了注释)。你应该避免插入脚本前doctype;符合分析程序不需要接受这一点。(他们应该接受所附的脚本 该文件其他部分,如果这是一种替代方法。)

从HTML5的说明:

8.1编写HTML文档

本节仅适用于文档、创作工具,并且标记>发电机。特别是,它不适用于一致性的棋子;>的一致性棋子必须使用要求在下一节>("分析HTML文件").

文件必须包括下列部分,在给定的顺序:

  1. 任选一个单一的"物料清单"(U+FEFF)符。
  2. 任何数量的评论和空间符。
  3. DOCTYPE.
  4. 任何数量的评论和空间符。
  5. 根元,在形式html元。
  6. 任何数量的评论和空间符。
  7. 各种类型的内容,上述描述在接下来的几个部分。

从HTML4.01规范:

7全球结构的一个HTML文档

HTML4的文件是由三部分组成:

  1. 包含HTML版本的信息,
  2. 声明的标题部分(分隔头元素),
  3. 一个身体,其中包含该文件的实际内容。人体可以通过身体元件或框架集的元素。

[...]

空白(空间、空行,标签和注释)可能出现之前或之后的每一个部分。

[...]

一个有效HTML文档宣布什么版HTML是中使用的文件。该文件的类型声明名称的文件类型的定义(DTD)中使用的文件(见[ISO8879]).

这不是一个标签,但是啊。主要是因为这是唯一的方式获得互联网浏览器(预8版,我认为)的进入标准的模式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top