在HTML文档中嵌入JavaScript时,在哪里放置<script>标记和包含的JavaScript?我似乎记得,你不应该把这些放在<head>部分,但放在<body>部分的开头也是不好的,因为JavaScript必须在页面完全呈现之前进行解析(或类似的)。这似乎将<body>部分的结尾作为<script>标记的逻辑位置。

那么,哪里是放置<script>标记的正确位置?

(这个问题引用了这个问题,其中建议将JavaScript函数调用从<a>标记移动到<script>标记。我专门使用jQuery,但更一般的答案也是合适的。)


当前回答

您可以通过使用围绕JavaScript代码的专用HTML标记<script>在HTML文档中添加JavaScript代码。

<script>标记可以放在HTML的<head>部分、<body>部分或</body>close标记之后,具体取决于何时加载JavaScript。

通常,JavaScript代码可以放在文档<head>部分的内部,以便将它们包含在HTML文档的主要内容之外。

但是,如果您的脚本需要在页面布局中的某一点运行(例如使用document.write生成内容时),则应该将其放在应该调用的位置,通常在<body>部分。

其他回答

您可以将大多数<script>引用放在<body>的末尾。

但是,如果页面上有使用外部脚本的活动组件,那么它们的依赖项(.js文件)应该在前面(最好在head标记中)。

最保守(也被广泛接受)的答案是“在结束标记之前的底部”,因为这样,在任何东西开始执行之前,整个DOM都将被加载。

出于各种原因,有人持不同意见,首先是有意识地开始执行页面加载事件。

您可以通过使用围绕JavaScript代码的专用HTML标记<script>在HTML文档中添加JavaScript代码。

<script>标记可以放在HTML的<head>部分、<body>部分或</body>close标记之后,具体取决于何时加载JavaScript。

通常,JavaScript代码可以放在文档<head>部分的内部,以便将它们包含在HTML文档的主要内容之外。

但是,如果您的脚本需要在页面布局中的某一点运行(例如使用document.write生成内容时),则应该将其放在应该调用的位置,通常在<body>部分。

就在结束正文标记之前,如在底部放置脚本所述:

将脚本放在底部脚本造成的问题是它们阻止并行下载。HTTP/1.1规范建议浏览器每个主机名并行下载的组件不超过两个。如果您从多个主机名提供图像,您可以同时获得两次以上的下载。然而,当下载脚本时,浏览器不会启动任何其他下载,即使是在不同的主机名上。

根据脚本及其用法,最好的方法(在页面加载和渲染时间方面)可能不是使用常规的<script>-标记本身,而是动态地异步触发脚本加载。

有一些不同的技术,但最直接的方法是在触发window.onload事件时使用document.createElement(“script”)。然后,当页面本身已呈现时,首先加载脚本,从而不会影响用户等待页面出现的时间。

这自然要求渲染页面时不需要脚本本身。

有关更多信息,请参阅SteveSouders(YSlow的创建者,现供职于谷歌)撰写的耦合异步脚本。