我正在使用以下代码创建新图像:
img = new Image();
img.src = image_url;
然后我将 img.src 分配给DOM中的img标签的src属性
$("#my_img").attr("src", img.src);
我怎么知道img.src已经100%加载了?最佳实践是什么?
在某些浏览器中,img.complete
看起来有点不太正常。
换句话说,我需要在图像100%加载后才将img.src
分配给 $("#my_img")
。
谢谢!我正在使用以下代码创建新图像:
img = new Image();
img.src = image_url;
然后我将 img.src 分配给DOM中的img标签的src属性
$("#my_img").attr("src", img.src);
我怎么知道img.src已经100%加载了?最佳实践是什么?
在某些浏览器中,img.complete
看起来有点不太正常。
换句话说,我需要在图像100%加载后才将img.src
分配给 $("#my_img")
。
谢谢!使用 load
事件:
img = new Image();
img.onload = function(){
// image has been loaded
};
img.src = image_url;
还可以看看:
使用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
})
}
当调用该函数时,我们可以非常简洁地处理其响应或错误。
getImage('imgUrl').then(function(successUrl){
//do stufff
}).catch(function(errorUrl){
//do stuff
})
$.when.apply($, [])
,其中 "[]
" 是一个承诺数组(即支持多个图像)。值得注意的是原生承诺也支持此功能。 - AndFisher(successUrl) => { //do stufff }).catch((errorUrl) => { //do stuff })
(基本上使用(param) =>
而不是function(param)
,因为这样如果你需要在promise内部使用this
,你仍然有原始引用) - Heichou