最好的处理方法是什么:JavaScript 中大小为零的图像不会触发 onload?

What is the best way to handle: onload not being triggered for images with size zero in JavaScript?

为了确保图像加载到我们的页面上然后进入下一个状态,我们使用了 onload 方法 here:

image = new Image();

image.onload = function(){
  // go to the next state
};

image.src = image_url;

问题是大小为零的图像不会触发事件,因此页面停留在暂停模式,不会进入下一个状态。

处理大小为零的图像未触发 onload 函数的问题的最佳方法是什么?

相关问题:

1- new Image(), how to know if image 100% loaded or not?

如果您真的想对 0 大小的文件执行此操作,请尝试将其设为脚本。 0 大小的脚本有效。参见:

Trying to fire the onload event on script tag

或者如果你真的有一些真实的图像,但有些是 "nothing",然后使用 1x1 "clear_pixel.gif"。您也可以使用 css 使其不可见(尽管这样您也不会看到真实图像),也许有一种方法可以从 onload 中的 js 检测图像的实际大小是多少。

你能给图像一个非 0 的大小,然后使用 position:absolute 将它们放在页面之外不可见的地方吗?

height:1px
width:1px
position:absolute
left:-1000000px

(我在这里假设它们是 non-zero 大小的实际图像,但是您将 img 元素的大小设置为 0 以使图像不可见。我不确定这是案。)

如果您希望您的进程在图像加载完成或加载失败时继续,您可以将事件处理程序添加到 .onerror 事件:

var image = new Image();

image.onload = image.onerror = function () { 
    // go to the next state
};

image.src = image_url;