从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规范允许的scope
对style
的元素。
如果我可以将所有嵌入的JS和CSS移动到body标签
你不能。 CSS不允许在正文中使用。
头标签的用途是什么?
Meta和Title元素也只能在Head中使用。 Meta对于指定文档的编码很有用。 标题是强制性的。
但是我想知道是否有任何问题将所有脚本和样式表从<head>
导入到<body>
标签的第一个位置?
移动脚本不太可能产生任何实际区别(它们会阻止内容的顶部与内容的顶部一样)。
移动CSS会使文档无效。 浏览器错误恢复是相当不错的,但如果可以帮助的话,触发它是没有意义的。
我发现了一件很有趣的事
头部和身体元素的开始和结束标记是可选的(元素仍然是强制性的,它们可以被推断出来)。
使用document.write
生成内容将其插入脚本元素之后。
解析器然后在脚本元素之后找到该内容。 由于它不允许在头部,它会结束头部并启动身体。
如果它遇到头部标签或身体开始标签,则将其作为从无效代码中恢复的一部分将其丢弃。
正如我前面所说,浏览器错误恢复是相当不错的,但如果可以帮助的话,触发它是没有意义的。 错误恢复是最有可能找到代码在不同浏览器中表现不同的地方之一。
链接地址: http://www.djcxy.com/p/71525.html