所以我的问题是这个(与讨论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 vars添加到DOM?在所有情况下都这样做是不是很好?
document.body.appendChild()总能做到这一点吗?
如果我使用new Image()代替document.createElement(),那么这里的工作方式会有所不同吗? 我正在努力对每个跟踪器放置一个setTimeout()来同时触发它们,但是新的Image()能够自己做吗?
答案 0 :(得分:2)
是否始终需要将以上创意img vars添加到DOM? 在所有情况下都这样做是不是很好?
您不必将图像添加到DOM。但是,如果您希望它在页面中可见,那么它必须以某种方式在DOM中,因为将它添加到DOM是如何显示的。图像可能未添加到DOM的一种常见情况是在预先处理图像时(导致浏览器下载图像,以便稍后需要时它已经在缓存中)。
document.body.appendChild()总能做到这一点吗?
document.body.appendChild(img)
会将图片添加到DOM的<body>
部分的末尾。它总会这样做。但是,通常这不是您想要DOM中的图像的位置,因此可能需要在其他地方定位位置的其他代码。
如果我改为使用new Image()代替document.createElement(),那么这里的工作方式会有所不同吗?我曾是 致力于对每个跟踪器设置setTimeout() 同时解雇它们,但新的Image()能够做到 这本身就是什么?
您可以使用new Image()
或document.createElement("img")
。要么创建一个相同的图像对象。我不清楚您对setTimeout()
的引用是什么。图像标签没有任何内置的定时功能。如果您希望将来某个特定时间加载图片,则可能需要使用setTimeout()
来调用该事件,以便在将来的特定时间内使用。
您无法控制浏览器是否同时请求N个图像,或者是否现在可以获取其中的一些图像,并且在前几个图像完成之后它们中的一些图像。浏览器通常具有每个来源的连接限制,并且它们只会同时向同一起源发起这么多连接。当后续请求在达到限制后进入时,它们将排队,直到某些当前打开的请求完成。