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

标签 javascript

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

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

最佳答案

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

This is a necessary part of the page’s life cycle because the script may cause changes to the page while executing. The typical example is using document.write() in the middle of a page (as often used by advertisements).

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

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

一切都与性能有关。

关于javascript - 为什么外部js脚本经常加载HTML页面底部的document.write()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571515/

相关文章:

javascript - 向 IDD 图添加鼠标导航

javascript - 打开一个子列表时滑动子列表

javascript - typescript 类不接受参数类型

javascript - 在 JQuery 中单击复选框时显示 Div

javascript - 使用主干 View 在模板上动态添加 ID 和类

javascript - 如何将javascript变量值分配给php变量

javascript - 如何使用 http post Node.js 下载文件

javascript - 在下拉选择菜单中获取所有值?

javascript - JSDoc 3.3.3 ES6 模板字符串刻度线上出现意外标记 ILLEGAL

javascript - Webpack 以错误的顺序捆绑我的文件 (CommonsChunkPlugin)