js组件之----图片预加载
2018-01-22 21:23
134 查看
jquery实现的图片预加载原理, 没有丰富的功能,但是基本功能可以实现.
如有雷同,纯属看了同一门课程…
如有雷同,纯属看了同一门课程…
/** * 图片预加载 * dependencies: jQuery * recommend: <script src='https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js'></script> */ (function(doc, win, $) { function Preload(imgs, opts) { this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;//若传入的不是数组,就转化为数组 this.opts = $.extend({}, Preload.DEFAULTS, opts);//浅拷贝 if (this.opts.order === 'unorder') { this._unordered();//无须加载 } else { this._ordered();//有序加载 } } Preload.DEFAULTS = { order: 'unorder',//默认使用无须加载 each: null, //每张图片加载完成后执行 all: null //所有图片加载完成后执行 }; Preload.prototype._ordered = function() {//将方法添加进对象的原型中 var imgs = this.imgs, opts = this.opts, len = this.imgs.length, count = 0; function orload() { var oImg = new Image(); $(oImg).on('load error', function() { //绑定事件 if (count >= len) { return; //所有图片加载完毕 } else { orload(); } }); oImg.src = imgs[count++]; } } Preload.prototype._unordered = function() { var imgs = this.imgs, opts = this.opts, len = this.imgs.length, count = 0; $.each(imgs, function(i, src) { if (typeof src != 'string') return; var oImg = new Image(); $(oImg).on('load error', function() { opts.each && opts.each(count); if (count >= len - 1) { opts.all && opts.all(); } count++; }); oImg.src = src;//上面new的图片对象在添加src值之后才开始加载 }); }; $.extend({ //将Predload对象添加进jquery的原型中 preload: function(imgs, opts) { new Preload(imgs, opts); } }); })(document, window, jQuery);
相关文章推荐
- [js开源组件开发]图片懒加载lazyload
- 前端性能优化--延迟加载js、css、图片等组件
- js判断图片是否完全加载的方法(jquery的error事件妙用)
- jQuery图片延迟加载(懒加载)之 jquery.lazyload.js
- js控制图片加载失败情况
- 挨踢骑术 lazyload.js实现图片异步延迟加载
- js图片预加载
- js,html(包括其中图片等非文本元素)加载顺序
- js判断图片是否加载完成
- 用js实现图片自动加载的瀑布流效果
- JS判断图片加载完成方法
- js 判断图片是否加载完以及实现图片的预下载
- 图片预加载插件 preLoad.js
- js 判断图片是否加载完以及实现图片的预下载
- 关于在reactjs项目中如何用webpack配置组件按需加载
- jquery.LoadImage.js 预加载图片
- jquery.lazyload.js图片延迟加载(懒加载)--转载
- jquery.lazyload.js实现图片延迟加载——wordpress图片随滚动条渐显效果
- js图片懒加载插件封装
- 用js实现广告图片后加载