新的Image(),如何知道图像是否100%加载?

Kir*_*lla 34 javascript jquery

我正在使用创建新图像

img = new Image();
img.src = image_url;
Run Code Online (Sandbox Code Playgroud)

然后我将img.src分配给DOM中的img标签的src

$("#my_img").attr("src", img.src);
Run Code Online (Sandbox Code Playgroud)

我怎么知道img.src已经100%加载?什么是最佳做法? img.complete对我来说在某些浏览器中看起来很小.

所以,换句话说,我需要分配img.src$("#my_img")后才img被加载100%.

谢谢!

Sar*_*raz 60

使用load活动:

img = new Image();

img.onload = function(){
  // image  has been loaded
};

img.src = image_url;
Run Code Online (Sandbox Code Playgroud)

另外看看:

  • 我相信只有在实际重新加载图像时才会触发onload.如果图像被缓存,则不会触发onload.谁能确认一下? (3认同)
  • 我可以使用上面的图像对象找到 **MIME** 类型的文件吗 (2认同)

gug*_*gol 17

使用Promise模式:

function getImage(url){
        return new Promise(function(resolve, reject){
            var img = new Image()
            img.onload = function(){
                resolve(url)
            }
            img.onerror = function(){
                reject(url)
            }
            img.src = url
        })
    }
Run Code Online (Sandbox Code Playgroud)

在调用函数时,我们可以非常巧妙地处理它的响应或错误.

getImage('imgUrl').then(function(successUrl){
    //do stufff
}).catch(function(errorUrl){
    //do stuff
})
Run Code Online (Sandbox Code Playgroud)