Javascript js异步映像加载问题

Javascript js异步映像加载问题,javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,我正在使用1x1像素图像技巧开发跟踪功能,部分基于 我的track.php看起来像: $out = date("Y-m-d H:i:s \n"); //later will pull and log data from $_SERVER file_put_contents('log.txt', $out , FILE_APPEND ); //output appropiate headers and serve pixel $pixel = '1x1.gif'; header('Content

我正在使用1x1像素图像技巧开发跟踪功能,部分基于

我的
track.php
看起来像:

$out = date("Y-m-d H:i:s \n"); //later will pull and log data from $_SERVER
file_put_contents('log.txt', $out  , FILE_APPEND );
//output appropiate headers and serve pixel
$pixel = '1x1.gif';
header('Content-Length: ' . filesize($pixel));
header('Content-Type: image/gif');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
print file_get_contents($pixel);
sleep(10); //<== for testing, to simulate possible extra processing or bottlenecks. Should NOT delay loading of main page
$out=date(“Y-m-dh:i:s\n”)//稍后将从$\u服务器提取并记录数据
文件内容('log.txt',$out,文件附加);
//输出适当的标题和服务像素
$pixel='1x1.gif';
标题('Content-Length:'.filesize($pixel));
标题('Content-Type:image/gif');
标头(“缓存控制:无缓存,必须重新验证”);
页眉(“到期日期:1997年7月26日星期六05:00:00 GMT”);//过去的日期
打印文件获取内容(像素);

睡眠(10)// 实际上,您可以使用“Image()”对象来完成此操作

jQuery示例 使用标准DOM的示例 您可能应该在请求上附加一个random GET参数,以确保它不会像这样被缓存:

window.addEventListener("load", function(){
    var img = new Image();
    img.src = "track.php?" + Math.floor(Math.random() * 9e9);
}, false);

如果您仅在DOM就绪时运行选项2,那么它将起作用
$(document).ready(function()
并且它一直延迟页面加载。谢谢您的帮助。Ops,我的坏。DOM在页面完全加载之前就准备好了。为此,您需要使用
$(document).load
,请参阅更多。选项1和2没有明显错误。请尝试选项2的变体:
$(“带有警报以查看是否发生加载或错误。我尝试了
$(窗口)。加载
和Beetroot的建议,两者都保持浏览器光标旋转,直到延迟完成。脚本在
中。我正在
本地主机
(ubuntu)上测试脚本。不确定还要尝试什么…”。。。
$(window).load(function(){
    var img = new Image();
    img.src = "track.php";
});
window.addEventListener("load", function(){
    var img = new Image();
    img.src = "track.php";
}, false);
window.addEventListener("load", function(){
    var img = new Image();
    img.src = "track.php?" + Math.floor(Math.random() * 9e9);
}, false);