因此,我的问题是(与讨论过的here不同:在移动广告中,我会得到印象跟踪器,可能是2、3或4。由于网络带宽有限,我想同时发射所有可用的跟踪器,而不是瀑布式的跟踪器(请不要问我为什么)。
我们一直在使用这样的代码:
<script type="text/javascript">
var imp_1 = document.createElement("img");
imp_1.src = "tracker url 1 here";
var imp_2 = document.createElement("img");
imp_2.src = "tracker url 2 here";
var imp_3 = document.createElement("img");
imp_3.src = "tracker url 3 here";
var imp_4 = document.createElement("img");
imp_4.src = "tracker url 4 here";
</script>更新所有这些1x1印象跟踪器将指向不同的服务器,因为它们来自不同的属性伙伴。
我的问题是:
img变量添加到DOM?在所有情况下,这是一个很好的实践吗?document.body.appendChild()总是能做到这一点吗?new Image()代替document.createElement(),那么这里的工作方式会有所不同吗?我正致力于对每个跟踪器设置一个setTimeout(),以同时发射它们,但是new Image()能够自己做到这一点吗?发布于 2015-08-03 06:54:39
是否总是需要将上述创造性的img添加到DOM中?在所有情况下,这是一个很好的实践吗?
您不必向DOM中添加图像。但是,如果您希望它在页面中是可见的,那么它将以某种方式出现在DOM中,因为将它添加到DOM是如何显示它的。图像可能不会被添加到DOM中的一个常见情况是在对图像进行加密时(导致浏览器下载图像,以便它在以后需要时已经在缓存中)。
document.body.appendChild()总是能做到这一点吗?
document.body.appendChild(img)将把图像添加到DOM的<body>部分的末尾。它永远都会这么做。但是,通常情况下,这并不是您想要在DOM中的图像的确切位置,所以可能需要一些其他代码来定位其他位置。
如果我用新图像()代替document.createElement(),那么这里的效果会有所不同吗?我正在对每个跟踪器设置一个setTimeout(),以同时触发它们,但是new ()能够单独完成吗?
您可以使用new Image()或document.createElement("img")。这两种方法都会创建一个图像对象。我不清楚你对setTimeout()的引用是什么。图像标记没有任何内置的定时功能。如果您希望在将来的某个特定时间加载一个映像,您可能希望使用一个setTimeout()调用来将该事件调度到将来的特定时间。
您不能控制浏览器是否同时请求N个图像,或者它现在是否获得其中的一些图像,以及在第几个图像完成后获得其中的一些图像。浏览器通常有每个来源的连接限制,并且它们只会一次触发那么多的连接到相同的来源。当随后的请求在达到限制后出现时,它们将排队,直到一些当前打开的请求完成为止。
https://stackoverflow.com/questions/31781046
复制相似问题