码迷,mamicode.com
首页 > 其他好文 > 详细

img 的onload事件和complate事件区别

时间:2018-03-22 14:33:37      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:可见   copy   预加载   出现   点击   cti   get   获取   log   

在图片预加载编码的时候看到onload跟complete,思考,onload跟complete有什么区别?测试在chrome环境下。
动手实践,编了一小段简单的测试代码
[javascript] view plain copy print?
document.getElementById(‘load‘).onclick = function() {
var img = new Image();
img.src="images/1-logo.png";
if(img.complete) {
console.log(‘dd‘);
}
img.onload = function() {
console.log(‘ff‘)
}
}


可以看到,第一次的时候,仅执行了onload,也就是我们看到的仅打印了‘ff‘文字,而接下来的每次点击都会出现“dd”,"ff",这是为什么呢?继续测试,改变位置:
[javascript] view plain copy print?
document.getElementById(‘load‘).onclick = function() {
var img = new Image();
if(img.complete) {
console.log(‘dd‘);
}
img.onload = function() {
console.log(‘ff‘)
}
img.src="";

}

点击仅显示dd;
[javascript] view plain copy print?
document.getElementById(‘load‘).onclick = function() {
var img = new Image();
if(img.complete) {
console.log(‘dd‘);
}
img.onload = function() {
console.log(‘ff‘)
}
img.src="images/1-logo.png";

}

dd,ff一起显示;
可见事件的执行与位置关系有关,看下onload的解释:

onload表示加载好,换言之,没有加载好不会执行;
再看complete,MDN上的解释:

无论src是否有值,成功与否,只要获取到image,就可以执行,而onload需要图片的加载完全,没有图片也就没有onload,这也就解释了为什么上面的一个案例一直显示“dd”,而没有执行显示“ff”;

因为complet为加载对象及属性完成;
onload为img对象的src加载完成后触发的事件;

img 的onload事件和complate事件区别

标签:可见   copy   预加载   出现   点击   cti   get   获取   log   

原文地址:https://www.cnblogs.com/lizhibk/p/8623478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!