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加载完成后触发的事件;

  • 相关阅读:
    strutr2运行流程
    ConcurrentHashMap原理分析
    面试题集锦
    jvm如何知道那些对象需要回收
    java中volatile关键字的含义
    关于Java类加载双亲委派机制的思考(附一道面试题)
    new关键字和newInstance()方法的区别
    Java中创建对象的5种方式 &&new关键字和newInstance()方法的区别
    字符串中第一个只出现一次的字符
    二进制数中1的个数
  • 原文地址:https://www.cnblogs.com/lizhibk/p/8623478.html
Copyright © 2011-2022 走看看