<script>不在<head> ok吗?</script>

时间:2010-11-30 16:26:21

标签: javascript html

我有一个问题在我脑海里好奇地徘徊了一段时间,我想我会问你的集体专业知识来回答这个问题。

详细说明标题,说我有这个:

alert("Some JS outside ");

在我的HTML文件的<head></head>标记之外。我的问题是这样做是否可行,以及它的使用程度是多少。

我的直觉告诉我没关系 - 我认为浏览器浏览<script>标签的所有HTML并在看到它时解释它,所以它应该可以,但我不是所有这些都与浏览器的工作方式相关。

我正在寻找一个明确的(或尽可能接近确定性)答案 - 这样做或不是吗?

编辑:为了节省我这么多次发帖,我会在这里说一次。非常感谢所有投入的人。投票给大家!我将不得不重新训练自己把JS放在页面的底部 - 现在我想起来,很明显,页面的底部的脚本比顶部更好。感谢大家的帮助。

4 个答案:

答案 0 :(得分:23)

脚本标记的最佳位置在结束标记之前。

<html>
      <head>
      <title>Example</title>
      </head>
      <body>
            Your Content
      <script type="text/javascript" src="yourScriptHere.js"></script>
      <script type="text/javascript">//Inline scripts etc.</script>
      </body>
</html>

那说他们可以在其他地方没有问题但是你最终想要它们的原因是你想确保页面在执行之前加载了你也不想停止客户端下载进度让他们等待大脚本。

答案 1 :(得分:13)

是的,<script>之外的<head>个网址没问题。

事实上,许多人鼓励将它们放在<body>的末尾。将它们放在</body>之前,将提取/加载推迟到页面内容之后......以加快渲染速度。

From the W3C HTML4 spec

  

SCRIPT元素将脚本放在文档中。此元素可能在HTML文档的HEAD或BODY中出现任意次。

答案 2 :(得分:12)

是。没关系。事实上,经常是必要的。在许多情况下,您可能有一些对页面不重要的长时间加载(读取:大型下载)javascript,因此您希望首先加载其余页面内容,因此您需要<script> <body>部分底部的javascript。

答案 3 :(得分:3)

文档正文中的脚本将在遇到时执行。如果它是一个函数,那么“执行它”只是意味着定义函数,即将它添加到已知函数列表中。但如果它不是一个函数,如果它是一个独立语句块,它们将在遇到的地方执行。

例如,如果你写了:

<html><head>... whatever ...</head>
<p>Foo
<script>
document.write("bar")
</script>
<p>Plugh
</html>

浏览器将显示:

Foobar
Plugh

这可能是您想要的也可能不是。