这是否是预装图像的正确方法?
我有一张表,一旦'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文件已经预加载了,是吗?
有没有办法检查图像是否实际缓存(预加载)?
由于
答案 0 :(得分:3)
使用sprite或使用display:none隐藏它,使用CSS加载图像。然后在js前面做一点点。
答案 1 :(得分:2)
使用Firebug的网络工具来检查这些图像是否已加载。
(来源: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对象 - 这就是在浏览器中加载它的原因。
因此,如果它没有大写,那么你正在调用一个可能存在或不存在的单独函数。