网站上经常会有这种现象。
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(img.complete==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、引入文件
1
|
<
script
src
=
"js/echo.min.js"
></
script
>
|
2、HTML
1
|
<
img
src
=
"images/blank.gif"
alt
=
"pic"
data-echo
=
"img/pic.jpg"
width
=
"640"
height
=
"480"
>
|
blank.gif 是一个 1 x 1 的图片,用做默认图片,data-echo 的属性值是图片的真实地址。同样最好给图片设置宽度和高度,或者在 CSS 中设置也可以,否则似乎很底部很底部的图片才会延迟加载。
3、JavaScript
1
2
3
4
|
Echo.init({
offset: 0,
throttle: 0
});
|
参数
参数 | 说明 |
---|---|
offset | 离可视区域多少像素的图片可以被加载 |
throttle | 图片延迟多少毫秒加载 |