美文网首页
判断单张、多张图片加载完成

判断单张、多张图片加载完成

作者: 流动码文 | 来源:发表于2017-07-06 17:25 被阅读0次

    学习自http://www.daqianduan.com/6419.html
    单张图片(图片在文档中)

    // HTML
    <img id='xiu' src=""> 
    //js
     $(document).ready(function(){
    
        //jquery
        $('#xiu').load(function(){
           // 加载完成 
        });
    
       //原生  onload
        var xiu = document.getElementById('xiu')
        xiu.onload = xiu.onreadystatechange = function(){
           if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){
               // 加载完成 
           }
        };
    
    })
    

    注:
    1、IE8及以下版本不支持onload事件,但支持onreadystatechange事件;
    2、readyState是onreadystatechange事件的一个状态,值为loaded或complete的时候,表示已经加载完毕。
    3、以下内容省略兼容

    单张图片(图片动态创建)

    //js
     var xiu = new Image()
     xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg'
     xiu.onload = function(){
        // 加载完成 
     }
    

    单张图片(结合Promise)

    //js
     new Promise((resolve, reject)=>{
        let xiu = new Image()
        xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg'
        xiu.onload = function(){
           // 加载完成 
           resolve(xiu)
        }
     }).then((xiu)=>{
     //code
     })
    

    多张图片

    var img = [],  
        flag = 0, 
        mulitImg = [
        'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg',
        'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg',
        'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg',
        'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg'
     ];
     var imgTotal = mulitImg.length;
     for(var i = 0 ; i < imgTotal ; i++){
        img[i] = new Image()
        img[i].src = mulitImg[i]
        img[i].onload = function(){
           //第i张图片加载完成
           flag++
           if( flag == imgTotal ){
              //全部加载完成
           }
        }
     }
    

    多张图片(结合Promise)

      let mulitImg = [
         'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg',
         'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg',
         'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg',
         'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg'
     ];
     let promiseAll = [], img = [], imgTotal = mulitImg.length;
     for(let i = 0 ; i < imgTotal ; i++){
         promiseAll[i] = new Promise((resolve, reject)=>{
             img[i] = new Image()
             img[i].src = mulitImg[i]
             img[i].onload = function(){
                  //第i张加载完成
                  resolve(img[i])
             }
         })
     }
     Promise.all(promiseAll).then((img)=>{
         //全部加载完成
     })
    

    相关文章

      网友评论

          本文标题:判断单张、多张图片加载完成

          本文链接:https://www.haomeiwen.com/subject/mptkhxtx.html