这方面的一个例子是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()输出脚本标记而不是字面上包含它?
答案 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。通过添加随机值来防止缓存。
基本上用于它的速度。