为什么外部js脚本经常在HTML页面的底部加载document.write()?

时间:2012-09-24 19:26:05

标签: javascript

这方面的一个例子是Google分析:

document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

用文字值替换document.write()是否同样好:

<script type="text/javascript" src="http://www.google-analytics.com/ga.js">

?我猜测标签是用document.write()输出的,因为gaJsHost('http://www.')的值不是提前知道的。但如果它已知,是否有任何理由使用document.write()输出脚本标记而不是字面上包含它?

5 个答案:

答案 0 :(得分:3)

默认情况下,脚本在html页面上遇到时会阻止页面的其余部分加载。只有当他们完成下载和执行时,页面的其余部分才会继续加载。来自高性能Javascript Nicholas C. Zakas

  

这是页面生命周期的必要部分,因为脚本   执行时可能会导致页面更改。典型的例子是   在页面中间使用document.write()(通常使用   广告)。

通过动态插入脚本,如上所述,您可以克服该行为 - 无页面阻塞 - 负载异步发生。

通过将事物放在页面底部,确保在javascript之前加载html和css。这样,在加载javascript时,用户已经可以看到该页面了。

这完全取决于表现。

答案 1 :(得分:2)

确保浏览器在呈现页面后加载它们。

这是表演的事。

答案 2 :(得分:0)

有几个可能的原因: 1.确保在加载javaScript文件之前页面的某些部分已经存在。这可以防止您尝试操作未创建的DOM元素。 2.加快速度;浏览器通常在加载javaScript时进入单线程模式,因此如果您在开始时并不真正需要它,最好将其延迟。

答案 3 :(得分:0)

我首先会参考一个很好的资源:

http://webreflection.blogspot.com/2009/12/documentwriteshenanigans.html

因此,在阅读本文后,我可以看到在呈现页面后加载脚本的优势。

答案 4 :(得分:0)

这是将脚本生成的文本添加到页面中的最快方法[浏览器不必修改DOM结构]。用于插入广告脚本[如果广告服务器速度慢,则会失败]。添加用户生成的数据到url。通过添加随机值来防止缓存。

基本上用于它的速度。