![](/img/trans.png)
[英]How do I include a css file into php in the head section of the page and a js file before the end of body tag?
[英]How is code *between* the end of the HEAD tag and before the BODY tag processed?
我已经读到这样做是不好的 ,并且在规范之外,但我有一个有点间歇性的错误,可能是相关的。 只是想知道普遍的共识是“用凝固汽油弹烧掉那个代码”还是“它在这些有限的条件下工作”。
我发现,在一个非常复杂的代码库中,我们维护了<script>
标签,它们都来自外部源(javascript和jquery),内联脚本,在</head>
和<body>
之前。 大部分是在表单完全加载后需要加载的代码。
在我开始做改革,以便把代码到head标签的底部,我想明白发生了什么,现在到运行该代码的客户(我们的目标是不会打破当前的用户体验)。 这些脚本是在呈现页面之前加载还是之后? 这个无人区代码的实际状态首先不应该存在于什么状态?
谢谢!
从根本上说,它是无效的标记和浏览器必须从中恢复的解析错误。 所以我会在你的目标浏览器中测试它,看看它们做了什么。
理论上:在结束</head>
标记之后和开始<body>
标记之前,解析器处于“ 'head'插入模式之后 ”。 我已经列出了下面的规则,但是由于你的评论 ,我认为相关的是:
- 标签名称为以下之一的开始标记:“base”,“basefont”,“bgsound”,“link”,“meta”,“noframes”,“script”,“style”,“template”,“title”
- 解析错误。
- 将头元素指针指向的节点推到打开元素的堆栈上。
- 使用“in head”插入模式的规则处理令牌。
- 从开放元素堆栈中删除头元素指针指向的节点。 (此时可能不是当前节点。)
- 此时头元素指针不能为空。
这告诉我们:
head
。 完整规则:
当用户代理要应用“后头”插入模式的规则时,用户代理必须按如下方式处理令牌:
字符标记是U + 0009字符制表,“LF”(U + 000A),“FF”(U + 000C),“CR”(U + 000D)或U + 0020 SPACE之一
- 插入角色。
评论标记
- 插入评论。
DOCTYPE令牌
- 解析错误。 忽略令牌。
标签名称为“html”的开始标记
- 使用“in body”插入模式的规则处理令牌。
标签名称为“body”的开始标记
- 为令牌插入HTML元素。
- 将frameset-ok标志设置为“not ok”。
- 将插入模式切换为“in body”。
标签名称为“frameset”的开始标记
- 为令牌插入HTML元素。
- 将插入模式切换为“in frameset”。
标签名称为以下之一的开始标记:“base”,“basefont”,“bgsound”,“link”,“meta”,“noframes”,“script”,“style”,“template”,“title”
- 解析错误。
- 将头元素指针指向的节点推到打开元素的堆栈上。
- 使用“in head”插入模式的规则处理令牌。
- 从开放元素堆栈中删除头元素指针指向的节点。 (此时可能不是当前节点。)
- 此时头元素指针不能为空。
标记名称为“模板”的结束标记
- 使用“in head”插入模式的规则处理令牌。
标记名称为以下之一的结束标记:“body”,“html”,“br”
- 按照下面“其他任何”条目中的描述行事。
标签名称为“head”的开始标记
任何其他结束标记
- 解析错误。 忽略令牌。
还要别的吗
- 为没有属性的“body”开始标记标记插入HTML元素。
- 将插入模式切换为“in body”。
- 重新处理当前令牌。
</head>
结束标记和<body>
开始标记之间出现的内容会直接插入<body>
开始标记,除非它是一个不属于正文的元素,在这种情况下它将插入到结尾处头部。
某些元素,如script
,可能出现在头部或身体中; 该位置的脚本元素将插入头部的末尾, 除非浏览器已经处于“体内”插入模式,在这种情况下,它们将被放置在正文中。
参见8.2.5.4.4“头部”插入模式 , 8.2.5.4.6“后头”插入模式和8.2.5.4.7 W3C HTML 的“体内”插入模式 ,以获取更多详细信息。 请注意,由于历史原因,错误或故意违反规范的决定,不保证实现遵循规范,并且不应依赖此行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.