首页 > 其他 > 详细

预加载

时间:2020-04-08 22:25:49      阅读:63      评论:0      收藏:0      [点我收藏+]

使用js实现图片预加载

接手了一个H5的项目,由于它里面存在大量的图片,为了提升客户体验,决定去学习一下使用js的预加载,下面展示我学的到的方法

    首先声明一个数组,数组每一位是该图片的路径  
    var imgSrcArr = [
        ‘images/load/1.jpg‘,
        ‘images/load/2.jpg‘,
        ‘images/load/3.jpg‘,
        ‘images/load/4.jpg‘,
        ‘images/load/5.jpg‘,
        ‘images/load/6.jpg‘,
        ‘images/load/7.jpg‘,
        ‘images/load/8.jpg‘,
        ‘images/load/9.jpg‘,
        ‘images/load/10.jpg‘,
        ‘images/load/11.jpg‘,
        ‘images/load/12.jpg‘,
        ‘images/load/13.jpg‘,
        ‘images/load/14.jpg‘,
        ‘images/load/15.jpg‘,
        ‘images/load/16.jpg‘,
        ‘images/load/17.jpg‘,
        ‘images/load/18.jpg‘,
        ‘images/load/19.jpg‘,
        ‘images/load/20.jpg‘,
        ‘images/load/21.jpg‘,
        ‘images/load/22.jpg‘,
        ‘images/load/23.jpg‘,
        ‘images/load/24.jpg‘
    ];
    
    var newImg = new Image();
    var imgNow = 0;             => 设置当前加载的图片为第0张
    
    function preloadImg() {
        newImg.src = imgSrcArr[imgNow]; => 把数组某一位赋给图片
        newImg.onerror = function () {  => 图片加载失败会如何
            console.log("加载失败")
        };
            
    
    
        newImg.onload = function () { => 当这个图片加载完成以后 //onload 事件会在页面或图像加载完成后立即发生。
            imgNow++;               => 照片当前量++
            if ( imgNow < imgSrcArr.length ) {  =>  如果还没有加载到最后一张
                preloadImg(imgSrcArr);          =>  递归调用自己
            } else {                            =>  已经加载到最后一张
                <!-- 此处写当全部加载完成之后发生的逻辑 -->
                return;
            }
            
            xxx.innerHTML = Math.round(imgNow / imgSrcArr.length * 100) + ‘%‘; => 此处可以写loading页加载的进度
        };
        
    }
    
    preloadImg();
复制代码

主要思路就是,new一个image,当我们把一个src赋给它的时候,它会自己去加载这个图片资源。加载完成,就会存到浏览器的缓存中。循环调用自己,实现图片预加载。当客户进入页面之后,由于图片已经全部已经已经在缓存中,会直接去读取缓存,大大提升了加载速度,增加了用户体验!! 首次写文章,请发表您的观点,让我进步,谢谢!!

预加载

原文:https://www.cnblogs.com/haylu/p/12662724.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!