Javascript image.onload()保证图像被加载?

时间:2013-12-21 12:24:49

标签: javascript html html5 image

我正在开发一款使用大量图片的HTML5游戏。 但是,有时游戏无法正确加载并抛出一些错误消息,表明某些图像未正确加载。 我使用预加载函数,在开始设置图像的src之前递增变量,并在onload()函数中递减它。只有当这个变量达到0时,才开始绘图。有时我(和其他用户)看到错误并且游戏没有加载。大部分时间它都有效。 现在我想知道......从技术上讲,这应该是不可能的。 onload函数的调用是否会加载图像?因为我觉得它没有。

这里的代码虽然我认为不重要:

var ressourcesToLoad = 1;

// all the loadImage() calls
// ...

ressourceLoaded();


function ressourceLoaded()
{
    ressourcesToLoad--;

    // if(ressourcesToLoad == 0) start main loop
}


function loadImage(imgFile)
{
    ressourcesToLoad++;
    var img = new Image();
    img.onload = ressourceLoaded();
    img.src = imgFile;
    return img;
}

2 个答案:

答案 0 :(得分:2)

是的,但据我记得:

1在某些浏览器中,它可以连续两次触发同一图像

2在某些浏览器中,从缓存加载图像时不会触发

3我不确定当服务器为图像返回404时它是否会触发

可能你应该在加载之前加载下一张图像。如果你在同一个域上有很多大图像并开始同时加载,那么“每页两个连接”规则可以为你打破一些东西。

P.S。:某些“某些浏览器”我的意思是“某些浏览器或它们过时的版本”。

答案 1 :(得分:0)

如果图像加载完毕,则complete属性不会告诉您更准确。不幸的是,加载完成后不会触发任何事件。一种方法是轮询此属性,直到将其设置为true