zoukankan      html  css  js  c++  java
  • img 的onload事件和complate事件区别

    在图片预加载编码的时候看到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加载完成后触发的事件;

  • 相关阅读:
    LVM逻辑卷管理练习
    浅谈TCP三次握手和四次分手
    centos模拟创建CA和申请证书
    破解root口令
    shell脚本编程进阶总结
    基于FIFO的串口发送机设计
    流水线方式LUT查表法乘法器
    verilog中有符号整数说明及除法实现
    LUT查表法乘法器所犯下错误。。。。
    似然函数
  • 原文地址:https://www.cnblogs.com/lizhibk/p/8623478.html
Copyright © 2011-2022 走看看