包括JS在头部或打开身体标签后立即

时间:2012-03-28 21:13:25

标签: javascript

<head>中包含Javascript而不是在OPENING <body>标记之后立即有什么区别?

Facebook Like小部件是一个示例,他们建议在打开<body>标记之后立即放置代码。 SiteCatalyst还建议将其用于分析代码。

虽然在<head>元素中包含代码与在结束</body>标记之前的代码之间存在明显差异,但我不确定<head>之间的区别是什么并且在打开<body>标记之后立即执行。

2 个答案:

答案 0 :(得分:6)

如果JavaScript在没有辅助函数(直接编写HTML)的情况下将某些内容输出到DOM中,那么在<body>中包含JavaScript是很重要的,但是在这种情况下应该没有区别。在<body>之后或</body>之前。

通常,依赖于正在加载的DOM的任何内容都会在</body>之前发生,因为在页面呈现到该点之前,将无法加载完整的DOM。我的猜测是这些脚本不依赖于正在加载的DOM,但它们会直接将HTML输出到DOM(如隐藏的<input>标记或其他内容)。

答案 1 :(得分:0)

当浏览器遇到脚本指令时,它会在处理页面的其余部分之前加载脚本。所以脚本越低越好。它可以在关闭身体标签后或在它之前立即进行。最好的方法是像这样异步加载它们(Google Analytics示例):

(function() {
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol 
          ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    })();