将script标签放在正文(</body>
)的结束标签之后有多大错。?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
将script标签放在正文(</body>
)的结束标签之后有多大错。?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Answers:
它不会在或标签之外进行验证。除非您正在执行可能会在body元素完全加载之前中断IE的 DOM操作,否则将它放置在close之前也不会有太大区别。<body>
<head>
</body>
<html>
....
<body>
....
<script type="text/javascript" src="theJs.js"></script>
</body>
</html>
<script src="..." defer>
,它可以在所有主要的浏览器中使用(尽管IE9及更低版本中可能存在潜在的漏洞)。
正如Andy所说,该文档将无效,但脚本仍将被解释。例如,请参阅WebKit中的代码片段:
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仍然可以容忍它们,但是有一天他们有可能会将其取消为非标准。
Google实际上在“ CSS优化”方面建议这样做。他们建议插入关键的折叠样式,并推迟其余样式(css文件)。
例:
<html>
<head>
<style>
.blue{color:blue;}
</style>
</head>
<body>
<div class="blue">
Hello, world!
</div>
</body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>
请参阅:https : //developers.google.com/speed/docs/insights/OptimizeCSSDelivery
body
元素放在元素之外。该Google文章不建议任何人做任何这样的事情。
现代的浏览器将脚本标记放在主体中,如下所示:
<body>
<script src="scripts/main.js"></script>
</body>
基本上,这意味着脚本将在页面完成后加载,这在某些情况下(即DOM操作)可能有用。但是,我强烈建议您使用相同的脚本,并使用“ defer”将其放在head标记中,因为它会产生相同的效果。
<head>
<script src="scripts/main.js" defer></script>
</head>
script
标签具有event
可以定义以确定何时解析脚本的属性。因此,您必须event="load" event="DOMContentLoaded"
在创建DOM之后或event="beforeunload"
在window beforeunload
事件上运行脚本。例如<script src="scripts/main.js" event="DOMContentLoaded"></script>
。