在使用异步加载javascript时,我将如何替换document.write?

时间:2015-12-07 09:33:06

标签: javascript asynchronous

故事: 我正在学习javascript以及alanytics和跟踪系统的工作方式。 我已阅读并调查了Google Analytics跟踪代码+他们的新版和&旧文件。但是当我试图复制这个过程时,我无法通过一个特定的部分。

我的问题+背景 我正在使用javascript代码,它会动态地向页面添加新的javascript代码。根据我的理解,使用这种方法:

<script type="text/javascript">
var hh = document.createElement('script');
hh.type = 'text/javascript';
hh.async = true;
hh.src = 'MY_EXTERNAL_JS.js';
var s = document.GetElementsByTagName('script')[0];
s.parentNode.insertBefore(hh, s);
</script>

比编写直接标记更好:

<script src="http://api.dvekotvy.cz/hh.js"></script>

因为这样,浏览器不会等待外部JS文件在主页面上呈现其他内容(如果我错了,请纠正我,但动态编写的JS AND&#34; async&#34;属性导致这个。)

我面临的问题是,我从外部服务器请求的JS文件除了执行cookie读取和导航器收集外,还使用document.write来注入{ {1}}标记到主页面,所有收集的数据都写为GET参数,并通过请求此图像发送到数据库。 (在服务器端,我使用PHP文件来处理数据并返回1x1透明像素,就像谷歌那样。)

关键问题:我可以选择将此跟踪图像与外部文件中的所有参数一起注入,同时保持此文件的JS请求不同步吗?

感谢您的帮助&amp;思路 AR

1 个答案:

答案 0 :(得分:1)

简单:不要使用document.write,使用DOM(文档对象模型):

var img = document.createElement("img");
img.src = "http://";
// and so on
// Append your image wherever you want using appendChild
document.body.appendChild(img);