WEB前端

jquery 判断图片加载完成 可以是单张或多张图片

位置:首页 > WEB前端 > jquery教程,2017-06-16
jquery 判断图片加载完成?在此之前来了解一下jquery的ready与window.onload的区别,ready只是dom结构加载完毕,便视为加载完成。

jquery 判断图片加载完成

在此之前来了解一下jquery的ready与window.onload的区别,ready只是dom结构加载完毕,便视为加载完成。(此时图片没有加载完毕),onload是指dom的生成和资源完全加载(比如flash、图片)出来后才执行。接下来回到正题,先从单张图片说起。

(1)、单张图片(图片在文档中)

// HTML
<img id='xiu' src="http://www.ablanxue.com/autoupload/201607/14686342930939046.jpg">  

//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、以下内容省略兼容


(2)、单张图片(图片动态生成)

//js
 var xiu = new Image()
 xiu.src = 'http://www.ablanxue.com/autoupload/201607/14686342930939046.jpg'
 xiu.onload = function(){
    // 加载完成 

 }


(3)、单张图片(结合ES6 Promise)

//js
 new Promise((resolve, reject)=>{
    let xiu = new Image()
    xiu.src = 'http://www.ablanxue.com/autoupload/201607/14686342930939046.jpg'
    xiu.onload = function(){
       // 加载完成 
       resolve(xiu)
    }
 }).then((xiu)=>{
 //code

 })


(4)、多张图片
var img = [],  
    flag = 0, 
    mulitImg = [
    'http://www.ablanxue.com/autoupload/201607/14686342930939046.jpg',
    http://www.ablanxue.com/autoupload/201607/14686342936563447.jpg',
    'http://www.ablanxue.com/autoupload/201704/14920737013089849.jpg',
    'http://www.ablanxue.com/autoupload/201704/14920737016831984.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 ){
          //全部加载完成
       }
    }
 }
(5)、多张图片(结合ES6 Promise.all())


  let mulitImg = [
    ' http://www.ablanxue.com/autoupload/201607/14686342930939046.jpg ',
     http://www.ablanxue.com/autoupload/201607/14686342936563447.jpg ',
    ' http://www.ablanxue.com/autoupload/201704/14920737013089849.jpg ',
    ' http://www.ablanxue.com/autoupload/201704/14920737016831984.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)=>{
     //全部加载完成

 })

以上就是关于jquery 判断图片加载完成的全部实现方法。



TAGS:jquery 判断图片加载完成



猜你喜欢


NewHot手机版