这是预装图像的正确方法吗?

时间:2009-12-02 11:05:29

标签: javascript html

这是否是预装图像的正确方法?

我有一张表,一旦'select option'改变,就会改变背景。 在我的页面正文中,我有这个:

 <body onload="preload();">

在我的同一页上的表格中我有:

 <select onchange="swap();"><option bla bla></select>

和js:

 function preload(){
 pic = new image(720, 65);
 pic.src = '../picture.jpg';
 }
 function swap(){
 document.getElementById("table_id_here").style.backgroundImage = '../picture.jpg';
 }

在函数swap()中我猜想picture.jpg文件已经预加载了,是吗?

有没有办法检查图像是否实际缓存(预加载)?

由于

3 个答案:

答案 0 :(得分:3)

使用sprite或使用display:none隐藏它,使用CSS加载图像。然后在js前面做一点点。

答案 1 :(得分:2)

使用Firebug的网络工具来检查这些图像是否已加载。

Fiebug
(来源:getfirebug.com

我猜你的代码应该可行,无论如何这是Dreamweaver用于图像预加载的流行脚本:

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

MM_preloadImages('img1.gif','img2.gif'); //add more if required

答案 2 :(得分:0)

单词“image”应该在preload函数的第二行中大写,如下所示:

pic = new Image(720, 65);

请记住,您正在通过调用其构造函数来创建新的Image对象 - 这就是在浏览器中加载它的原因。

因此,如果它没有大写,那么你正在调用一个可能存在或不存在的单独函数。