Is it wrong to place the <script> tag after the </body> tag?
将脚本标记放在正文的结束标记(
将脚本标记放在正文的结束标记(
之后)有多错误。?
1 2 3 4 5 6 7 | <html> .... <body> .... </body> <script type="text/javascript" src="theJs.js"> </html> |
它不会在
对。在正文的结束标记之后,只允许HTML元素的注释和结束标记。 浏览器可能会执行错误恢复,但您不应该依赖于此。
2
3
4
5
6
7
....
<body>
....
<script type="text/javascript" src="theJs.js">
</body>
</html>
正如安迪所说,这份文件将是无效的,但脚本仍将被解释。请参阅WebKit中的代码段,例如:
1 2 3 4 5 6 7 8 9 10 | void HTMLParser::processCloseTag(Token* t) { // Support for really broken html. // we never close the body tag, since some stupid web pages close it before // the actual end of the doc. // let's rely on the end() call to close things. if (t->tagName == htmlTag || t->tagName == bodyTag || t->tagName == commentAtom) return; ... |
IE不再允许这样做(我相信从第10版开始),它将忽略这些脚本。FF和Chrome仍然能够容忍它们,但有可能有一天它们会将其视为非标准产品而放弃。
按程序在"element body"后面插入"element script",W3C推荐的过程为"parse error"。在"tree construction"中创建错误并运行"tokenize again"来处理该内容。所以这就像是额外的一步。只有这样才能运行"脚本执行"——请参阅方案过程。
Anything else"parse error". Switch the"insertion mode" to"in body" and reprocess the token.
从技术上讲,它是一个内部过程,是如何标记和优化的。
我希望我能帮助别人。
谷歌在"CSS优化"方面提出了这一建议。他们建议在上面的关键折叠样式和延迟其余(CSS文件)。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <html> <head> <style> .blue{color:blue;} </style> </head> <body> Hello, world! </body> </html> <noscript><link rel="stylesheet" href="small.css"></noscript> |
请参阅:https://developers.google.com/speed/docs/insights/optimizecssdelivery
对。但是如果你把代码添加到外部,它很可能不会是世界末日,因为大多数浏览器都会修复它,但这仍然是一个糟糕的做法。