从HTML中删除头标签

我只是想学习更好的HTML,并且提出了这个问题:如果我可以将所有嵌入的JS和CSS移动到body标签,head标签的目的是什么?

我知道我可以设置和各种meta标签。 好。 但是与脚本和css有关,将代码放在<head><body>标记的最开始是否有区别?

我知道导入脚本会停止页面呈现,并且会阻止浏览器从相同的主机名下载超过X个资源。 我知道最好的做法是将脚本移动到最后(尽可能)。 每个案件都是不同的案件,我知道 ! 但是我想知道是否有任何问题将所有脚本和样式表从<head>导入到<body>标签的第一个位置?

我知道一些旧的浏览器会渲染一些空间,如果我把脚本标签放在body标签内,但除此之外,还有其他问题吗?

编辑

我发现了一件很有趣的事 检查此代码:

<script type="text/javascript">
document.write("testing");
</script>

如果将它放在<head><body>的顶部,则“测试”字将插入到<body>的顶部。 所以,再次清楚的是,将js css代码放在头部是无效的,但可以移动到没有问题(每种情况都是不同的情况)。


script标签在body是完全正常的。

从技术上讲,将style元素1或link元素放在body是无效的。 实际上,它是功能性的,我从来没有听说过与它有关的问题,但它是无效的HTML。 如果您稍后在DOM中查找它们,您可能会发现浏览器已将它们重新定位到head (可能是它自己生成的head )。 (我用欺骗的经验style ,这是我对一个项目进行务实的理由这样做一次,是它并没有搬迁;对于不会说话link 。在任何情况下,情况因人而异)

同样,如果文档不是任何iframe src文档,那么文档就没有任何head文件,这在技术上是无效的。 从规格:

4.2.1 head元素
... 内容模型
如果文档是iframe srcdoc文档... [snip]
否则:元数据内容的一个或多个元素,其中一个是title元素,不超过一个是base元素。

例如,你的文件中必须有一个head元素,并且它必须有一个title 。 请注意,这并不意味着您实际上必须键入<head></head>因为两个标签有时都是可选的(就像打开的<body>标签一样)。 例如,这是一个非常有效的HTML5文档:

<!doctype html>
<html>
<title>My Document</title>
<div>Hi there</div>

不推荐它 ,但它是有效的。

...头标签的用途是什么?

从规格:

head元素表示Document的元数据集合。

它不仅包括CSS和脚本资源,还包括诸如title东西,并经常使用<meta charset="...">声明,以防文档在没有指定编码的机制的情况下使用。

所以我建议把CSS head ,明确说明head ,包括所需的title和推荐的<meta charset="..."> 。 只是FWIW,这是我的绝对基线最小文件:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>The title</title>
</head>
<body>
</body>
</html>

是的,当然,其中有几个标签在技术上是可选的,这在技术上符合每个规范的等效文档:

<!doctype html>
<meta charset="UTF-8">
<title>The title</title>

...但他们不花费太多,我更喜欢清晰度。


1有关范围style元素的讨论,如果它们是正式化的,那么这些元素在head外部是有效的。 这个想法一直踢出现自至少2011年,但即使在今天,无论是W3C规范上面链接,也不WHAT-WG规范允许的scopestyle的元素。


如果我可以将所有嵌入的JS和CSS移动到body标签

你不能。 CSS不允许在正文中使用。

头标签的用途是什么?

Meta和Title元素也只能在Head中使用。 Meta对于指定文档的编码很有用。 标题是强制性的。

但是我想知道是否有任何问题将所有脚本和样式表从<head>导入到<body>标签的第一个位置?

移动脚本不太可能产生任何实际区别(它们会阻止内容的顶部与内容的顶部一样)。

移动CSS会使文档无效。 浏览器错误恢复是相当不错的,但如果可以帮助的话,触发它是没有意义的。

我发现了一件很有趣的事

头部和身体元素的开始和结束标记是可选的(元素仍然是强制性的,它们可以被推断出来)。

使用document.write生成内容将其插入脚本元素之后。

解析器然后在脚本元素之后找到该内容。 由于它不允许在头部,它会结束头部并启动身体。

如果它遇到头部标签或身体开始标签,则将其作为从无效代码中恢复的一部分将其丢弃。

正如我前面所说,浏览器错误恢复是相当不错的,但如果可以帮助的话,触发它是没有意义的。 错误恢复是最有可能找到代码在不同浏览器中表现不同的地方之一。

链接地址: http://www.djcxy.com/p/71525.html

上一篇: Removing head tag from HTML

下一篇: putting javascript after </html> tag