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

标签 javascript html 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;
}

最佳答案

是的,但据我所知:

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

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

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

也许你应该在加载上一张图像后才开始加载下一张图像。如果您在同一个域中有很多大图像并开始同时加载它们,“每页两个连接”规则可能会破坏您的某些东西。

P.S.:某些“某些浏览器”是指“某些浏览器或其过时版本”。

关于Javascript image.onload() 保证图像已加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718971/

相关文章:

javascript - 动态改变文本框的值

css - 如何禁止在浏览器中查看图像?

javascript - 为什么 Stackoverflow 使用 javascript 动态绑定(bind)用户操作?

javascript - 根据用户在 Openlayers 3 中的输入在 map 上绘制图标

javascript - TinyMCE 未加载

javascript - 在数据绑定(bind)中发送事件目标单击 html

html - 在图像中心嵌入视频

html - CSS 媒体查询中的边距不符合预期

image - 如何使用位于当前工作目录之外的目录中的图像文件创建新的 Image()

html - 通过使用图像源的协议(protocol)相对 URL 来防止安全/不安全错误