在<head>
中包含Javascript而不是在OPENING <body>
标记之后立即有什么区别?
Facebook Like小部件是一个示例,他们建议在打开<body>
标记之后立即放置代码。 SiteCatalyst还建议将其用于分析代码。
虽然在<head>
元素中包含代码与在结束</body>
标记之前的代码之间存在明显差异,但我不确定<head>
之间的区别是什么并且在打开<body>
标记之后立即执行。
答案 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);
})();