Javascript 关于image.src用于统计的问题
我有一个问题,当我使用image.src在1x1 gif上发出请求时。但当我使用chrome和safari时,请求无法登录到我的web服务器。但当我使用javascript延迟一小秒(比如300ms)时,它就可以工作了。有谁知道一个更好的解决方案,而不是使用300ms延迟(因为它会使我的点击变慢) 我的javascript看起来是这样的Javascript 关于image.src用于统计的问题,javascript,gif,usage-statistics,Javascript,Gif,Usage Statistics,我有一个问题,当我使用image.src在1x1 gif上发出请求时。但当我使用chrome和safari时,请求无法登录到我的web服务器。但当我使用javascript延迟一小秒(比如300ms)时,它就可以工作了。有谁知道一个更好的解决方案,而不是使用300ms延迟(因为它会使我的点击变慢) 我的javascript看起来是这样的 /* Event Capture */ function eventCapture(et,ep,eid,eurl) { var ec=new Im
/* Event Capture */
function eventCapture(et,ep,eid,eurl) {
var ec=new Image();
ec.src=cp+cd+cu
+"&et="+escape(et)
+"&ep="+escape(ep)
+"&ei="+escape(eid)
+"&eu="+escape(eurl)+_do+_vo
+"&cb="+new Date().getTime();
}
有人知道请求吗?您如何设置延迟?如果你打电话
setTimeout("javascript function",milliseconds);
在事件捕获中,它不应该阻塞页面的其余部分,并且能够一次处理多次单击,因为每次调用都会调用一个独立于其余部分的新setTimeout
就您的代码而言,我假设变量
cp、cd和cu
是在其他地方全局定义的?如果首次调用脚本时未定义某些内容,则在创建图像的src
字符串时,Chrome将抛出ReferenceError
,有一种可能是图像立即被垃圾收集,因为没有对图像变量ec
的持久引用。但是,当您执行setTimeout()
时,它会创建一个闭包,使变量持续足够长的时间
您可以测试此解决方案,该解决方案仅在映像实际加载之前创建临时闭包,以查看它是否解决了问题:
/* Event Capture */
function eventCapture(et,ep,eid,eurl) {
var ec=new Image();
ec.onload = function() {
ec = null;
}
ec.src=cp+cd+cu
+"&et="+escape(et)
+"&ep="+escape(ep)
+"&ei="+escape(eid)
+"&eu="+escape(eurl)+_do+_vo
+"&cb="+new Date().getTime();
}
非常感谢你。供应商现在使用的延迟方法是通过循环,类似这样:void pausecomp(pausetime){var wait_time=new Date()+pausetime;while(new Date()