首页 > zencart项目, 全部文章, 学习笔记 > javascript 图片loading的实现

javascript 图片loading的实现

我们在设计一些图片比较多的网页时,为了增强用户体验,希望图片加载的时候有个loading动画效果,而不是由空白到一下子出来。在zen cart的二次开发过程中同样也遇到了这个问题,下面是我的解决方案。

首页给图片设置一个默认的loading动画,再分配一个id,如<img  id=”loading1″  src=”loading.gif”>实际上加载过程通过一个函数来完成

function addListener(element, type, expression, bubbling)
{
bubbling = bubbling || false;
if(window.addEventListener)    { // Standard
element.addEventListener(type, expression, bubbling);
return true;
} else if(window.attachEvent) { // IE
element.attachEvent('on' + type, expression);
return true;
} else return false;
}

var ImageLoader = function(url){
this.url = url;
this.image = null;
this.loadEvent = null;
};

ImageLoader.prototype = {
load:function(){
this.image = document.createElement('img');
var url = this.url;
var image = this.image;
var loadEvent = this.loadEvent;
addListener(this.image, 'load', function(e){
if(loadEvent != null){
loadEvent(url, image);
}
}, false);
this.image.src = this.url;
},
getImage:function(){
return this.image;
}
};

function loadImage(objId,urls){
var loader = new ImageLoader(urls);
loader.loadEvent = function(url){
obj = document.getElementById(objId);
obj.src = url;
}
loader.load();
}

通过loadImage函数就可以为指定的图片添加加载过程,其中通过addListener 函数注册事件,使得在图片加载完成的时候能够自动替换掉loading.gif这个动画过渡图片。使用代码很简单

<img  id=”loading1″  src=”loading.gif”  />

<script language=”javascript”>

loadImage(“loading1″,”http://www.baidu.com/img/baidu_logo.gif”);

</script>

  1. 一般般
    2009年11月6日15:10 | #1

    上面一大段代码需要放在网页里吗?(function addListener……这段)

  2. 一般般
    2009年11月6日15:11 | #2

    好像不行…..到底怎么用啊 ,我很菜..

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
click to change 看不清?点击换一张!