1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- Namespace.register("U.UF.IMG");
- /**
- * 图片预加载方法
- *
- * @param {string} 需要加载的图片地址
- * @param {function} 预加载回调函数
- * @param {function} 加载成功回调
- * @param {function} 错误处理回调
- * @return {element} 图片元素
- */
- U.UF.IMG.imgReady = function (url, URD, ULD, UE) {
- var _UW,
- _UH,
- _UNW, //image对象的width属性
- _UNH, //image对象的height属性
- _UIMG = new Image(); //image对象
- _UOR = function () { //预加载
- _UIMG = _UIMG || this;
- _UNW = _UIMG.width;
- _UNH = _UIMG.height; //获取加载图片的长宽
- if ((_UNW !== _UW || _UNH !== _UH) || _UNH !== 0) {
- if (URD) { URD.call(_UIMG) };
- _UOR.end = true;
- }
- };
- U.selectEl(_UIMG).addAttrArray({ "src": url,
- "onload": function () { //成功加载回调
- setTimeout(function () {
- if (!_UOR.end) { _UOR() };
- if (_UIMG) { _UIMG.onload = _UIMG.onerror = null };
- if (_UIMG && ULD) { ULD.call(_UIMG) };
- _UIMG = null;
- }, 0);
- },
- "onerror": function () { //错误图片处理
- if (U.UF.C.IsNetwork()) {
- if (UE) { UE.call(_UIMG) };
- }
- }
- });
- if (_UIMG) { //说明图片还在加载中
- _UOR(); //执行预加载处理
- if (_UIMG.complete == true) { //判断是否已经成功加载过了 缓存图片处理
- _UIMG.onload(); return;
- }
- }
- if (!_UOR.end) { //添加进入图片大小加载事件
- U.UF.IMG.imgReady._UL.push(_UOR);
- if (U.UF.IMG.imgReady._UIT == null) {
- U.UF.IMG.imgReady._UIT = setInterval(U.UF.IMG.imgReady._URT, 40); //每40毫秒进入
- }
- }
- return _UIMG;
- }
- U.UF.IMG.imgReady._UIT; //计时器初始化
- U.UF.IMG.imgReady._UL = []; //需要预加载的图片集
- //去除预加载计时
- U.UF.IMG.imgReady._US = function () {
- clearInterval(U.UF.IMG.imgReady._UIT);
- U.UF.IMG.imgReady._UIT = null;
- };
- //计时加载逐个加载处理
- U.UF.IMG.imgReady._URT = function () {
- for (var i = 0; i < U.UF.IMG.imgReady._UL.length; i++) {
- U.UF.IMG.imgReady._UL[i].end ? U.UF.IMG.imgReady._UL.splice(i--, 1) : U.UF.IMG.imgReady._UL[i]();
- }
- if (!U.UF.IMG.imgReady._UL.length) { U.UF.IMG.imgReady._US() };
- }
|