图片预加载、图片延迟加载插件

网站上经常会有这种现象。
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 图片延迟多少毫秒加载




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值