一个小巧的图片预加载种.

一个小巧的图片预加载类...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<SCRIPT LANGUAGE="JavaScript">
<!--
var IE=navigator.appName=="Microsoft Internet Explorer";
var Opera=navigator.appName.toLowerCase()=="opera";
var FF=!IE && !Opera;
function LoadImage(arrSrc,callBack)
{
 this.Length=arrSrc.length;
 this.LoadedLen=0; //已经被加载的图片个数
 var self=this;
 if(self.Length<1)
 {
  callBack(arrSrc);
  return;
 }
 
 //经测试,OPERA与别的浏览器加载方式不同,所以特别独立开来...
 if(Opera)
 {
  for(var i=0;i<self.Length;i++)
  {
   var tmpImg=new Image();
   tmpImg.src=arrSrc[i];
   tmpImg.onload=function()
   {
    self.LoadedLen++;
    if(self.LoadedLen==self.Length && callBack) callBack(arrSrc);
   }
  }
  return;
 }

 this.Load=function()
 {
  self.LoadedLen++;
  document.getElementById("counter").innerHTML=self.LoadedLen;
  if(self.LoadedLen<self.Length) self.DownImg();
  else if(callBack) callBack(arrSrc);
 }
 
 this.DownImg=function()
 {
  var tmpImg=new Image();
  tmpImg.src=arrSrc[self.LoadedLen];
  if(IE)
  {
   if(tmpImg.readyState=="complete") self.Load();
   else tmpImg.onreadystatechange=function()
   {
    if(this.readyState=="complete") self.Load();
   }
  }
  else tmpImg.onload=self.Load;
 }
 this.DownImg();
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<div id="counter"></div>
 <SCRIPT LANGUAGE="JavaScript">
 <!--
 var arr=['http://www.baidu.com/img/baidu_logo.gif','http://wb.caike.com/images/logo.gif','http://www.google.com.hk/intl/zh-CN/images/logo_cn.gif'];
 var t=new LoadImage(arr,function(arr)
 {
  
  var str="";
  for(var i=0;i<arr.length;i++)
  {
   str+="<img src='"+arr[i]+"' /><br>";
  }
  document.body.innerHTML+=str;
 });
 //-->
 </SCRIPT>
</BODY>
</HTML>