当客户端请求页面时,我们的安全管理器会在每个html页面的顶部动态插入一些javascript。它被插入DOCTYPE语句之上。我认为这可能是我遇到布局问题的原因。
想点什么?
答案 0 :(得分:12)
是的,DOCTYPE必须先出现。
定义如下:http://www.w3.org/TR/REC-html40/struct/global.html。请注意,它说文档由三部分组成,DTD必须是第一部分。
答案 1 :(得分:6)
是的,DOCTYPE必须是页面上的第一个数据:http://www.w3schools.com/tags/tag_DOCTYPE.asp
答案 2 :(得分:2)
HTML建议将其表示为SGML的一个应用程序,它要求DOCTYPE
声明出现在HTML元素之前(忽略HTML注释)。即使没有DOCTYPE
,在SCRIPT
元素之外(在它之前或之后)添加HTML
元素也不是有效的HTML。当然,HTML有效性可能不是你的要求,只要它适用于大多数浏览器,然后提到的怪癖模式切换就会得到你:没有DOCTYPE
,许多浏览器会切换到怪癖模式,可能会改变布局。
我认为TAM脚本片段是由某个代理或其他代理添加的,无法正确分析页面的HTML结构并将SCRIPT
插入HEAD
中的正确位置或该文件的BODY
。在这种情况下,添加到文档末尾虽然不是有效的HTML,但在大多数Web浏览器中都可以使用。
答案 3 :(得分:1)
但它可能是你问题的根源! 检查“怪癖模式”,因为这取决于doctype设置。 进一步研究:http://www.quirksmode.org/ 解释:您可以将浏览器切换到(主要是IE)严格的标准编译模式和松散模式。这将极大地影响渲染。 TAM的设置可以打开/关闭它。
答案 4 :(得分:1)
是的,doctype必须是文档中的第一件事(注释除外)。您应该避免在doctype之前插入脚本;兼容的解析器不需要接受它。 (他们应该接受在文档的其余部分之后附加的脚本,如果这是另一种选择。)
来自HTML 5规范:
8.1 Writing HTML documents
本节仅适用于文档,创作工具和标记>发电机。特别是,它不适用于一致性检查器; >一致性检查员必须使用下一节中给出的要求> (“解析HTML文档”)。
文件必须按照给定的顺序包含以下部分:
- 可选,单个“BOM”(U + FEFF)字符。
- 任意数量的评论和空格字符。
- A DOCTYPE。
- 任意数量的评论和空格字符。
- 根元素,采用html元素的形式。
- 任意数量的评论和空格字符。
- 上面提到的各种类型的内容将在接下来的几节中介绍。
醇>
来自HTML 4.01规范:
7 The global structure of an HTML document
HTML 4文档由三部分组成:
- 包含HTML版本信息的行
- 声明性标题部分(由HEAD元素分隔),
- 一个正文,其中包含文档的实际内容。正文可以由BODY元素或FRAMESET元素实现。
醇>[...]
每个部分之前或之后可能会出现空格(空格,换行符,制表符和注释)。
[...]
有效的HTML文档声明文档中使用的HTML版本。文档类型声明命名文档使用的文档类型定义(DTD)(参见[ISO8879])。
答案 5 :(得分:1)
我读过w3规范,只是说文档有3个部分。假定序列并且没有明确的声明禁止,例如,前面有一点js snippit。
据我所知,有可能将TAM配置为在文章的末尾添加js,但是如果它可以引起如此明显的问题,它会让我们为什么会把它放在首位呢!
答案 6 :(得分:1)
W3c(在w3.org上),在一个名为html5/syntax.html的网页上,说“ DOCTYPE 是必需的序言”,我认为这意味着它是必需的并且必须来第一
它还说它必须按以下顺序组成:
<!DOCTYPE
的ASCII不区分大小写匹配。html
的ASCII不区分大小写匹配。>
(U + 003E)字符。答案 7 :(得分:0)
这不是标签,但是是的。主要是因为这是将Internet Explorer(我认为是8版之前)转换为标准模式的唯一方法。