4

谷歌分析就是一个例子:

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() 输出脚本标记而不是按字面意思包含它?

4

5 回答 5

3

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

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

通过动态插入脚本,就像上面所做的那样,您可以克服这种行为 - 没有页面阻塞 - 加载异步发生。

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

一切都与性能有关。

于 2012-09-24T19:33:31.210 回答
2

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

这是一个性能的东西。

于 2012-09-24T19:31:42.780 回答
0

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

于 2012-09-24T19:34:44.297 回答
0

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

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

所以读完这篇文章后,我可以看到它的优点是在页面渲染后加载脚本。

于 2012-09-24T19:35:26.760 回答
0

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

主要用于它的速度。

于 2012-09-24T19:49:09.893 回答