网站上经常会有这种现象。
1、带有图片的列表页面图片没有加载过来时候,页面排版是乱的。
2、图片加载失败后显示一个裂痕玻璃图片 并不友好
为了解决这些现象 我自己封装了了个插件:
/*图片加载未完成显示占位图*///判断手机内核var local_Browser=new Object();local_Browser.userAgent=window.navigator.userAgent.toLowerCase();local_Browser.ie=/msie/.test(local_Browser.userAgent);// local_Browser.Moz=/gecko/.test(local_Browser.userAgent);//判断是否加载完成var img_errors=0;function local_Imagess(url,imgid,callback){var val=url;var img=new Image();if(local_Browser.ie){img.onreadystatechange =function(){if(img.readyState=="complete"||img.readyState=="loaded"){callback(img,imgid);}}}else{img.οnlοad=function(){if(plete==true){callback(img,imgid);}}}
//如果不是wifi调用小图if(!_gw_wifi_conn){if(url==undefined)return;if(url.lastIndexOf("icon_")>=0 || url.lastIndexOf("small_")>=0){img.οnerrοr=function(){img.src=imgid.attr('src');}}else{pos=url.lastIndexOf(".");val=url.substr(0,pos)+"_s"+url.substr(pos);img.οnerrοr=function(){img.src=url;img_errors++;if(img_errors>200){img.src="";}}}}else{img.οnerrοr=function(){img.src=imgid.attr('src');}}//如果因为网络或图片的原因发生异常,则显示该图片img.src=val;}//显示图片function checkimg(obj,imgid){imgid.attr('src',obj.src)}
调用方式如:rsrc为真实地址 src是默认图片 <img rsrc="{$site_url}/{$store_infos.mobile_logo}" src='{img file=mobile/default_img.jpg}' width="115px" height="115px" class="bi_conimg" >
$("img[rsrc]").each(function(index,domEle){local_Imagess($(this).attr('rsrc'),$(this),checkimg);});
2、echo.js
插件描述:和 Lazy Load 一样,Echo.js 也是一个用于图像延迟加载 JavaScript。不同的是 Lazy Load 是基于 jQuery 的插件,而 Echo.js 不依赖于 jQuery 或其他 JavaScript 库,可独立使用。并且 Echo.js 非常小巧,压缩后不足 1KB。兼容性
Echo.js 使用了 HTML5 的 date 属性,并且需要获取该属性的值,所以它并不兼容 IE6、IE7。虽然 Lazy Load 也使用了 HTML5 的 date 属性,但它获取值的方法不一样。
使用方法
1、引入文件
2、HTML
blank.gif 是一个 1 x 1 的图片,用做默认图片,data-echo 的属性值是图片的真实地址。同样最好给图片设置宽度和高度,或者在 CSS 中设置也可以,否则似乎很底部很底部的图片才会延迟加载。
3、JavaScript