请教JS高手:网页中如何以隐含方式加载图片?

网页中有一个我写的用JS来变换菜单图片背景的程序,当网页打开时可以显示默认图片背景,但当鼠标移到那个地方的时候,需要显示变换的图片背景,图片却还没有下载下来,是空白的.我希望它早下载了,当鼠标移到上面的时候图片显示出来.
函数如下:
<script language=javascript>
<!--
function bgimg(str) //当鼠标移上去的时候加载这个函数
{ //v3.0
document.getElementById("bgimages"+str+"").style.backgroundImage = "url(images/"+str+".gif)";
}
function oubgimg(atr)//移开时
{
document.getElementById("bgimages"+atr+"").style.backgroundImage ="";
}
-->
</script>

<table id=bgimages1 onClick="document.getElementById('mq').src='1.asp?s=random'" onMouseDown="document.getElementById('cxcx').innerHTML ='<B>文章录入</B>)';" onMouseOut=oubgimg(1) onMouseOver=bgimg(1) width="173" height="32" border="0" cellpadding="0" cellspacing="0" background="images/gl_r6_c1.gif">
<tr>
<td width="173"> </td>
</tr>
</table>
<table id=bgimages2 onClick="document.getElementById('mq').src='2.asp?s=random'" onMouseDown="document.getElementById('cxcx').innerHTML ='<B>文章修改</B>)';" onMouseOut=oubgimg(2) onMouseOver=bgimg(2) width="173" height="32" border="0" cellpadding="0" cellspacing="0" background="images/gl_r7_c1.gif">
<tr>
<td width="173"> </td>
</tr>
</table>

下面加载图片的方法好像不行:
<body leftmargin="0" topmargin="0" onLoad="images/1.gif','images/2.gif',">

请问有没有解决的办法呢?
之所以用背景的方式,是因为如果直接用图片(如DREAMWEVER提供的方式)是可以的,但那样当鼠标放上去的时候,图片就会出现QQ等的下载提示,所以不想用图片,而是用背景.
只需要提前下载这个图片就行,可是我想不出来有什么办法解决.
到2月28日为止尚未有最佳答案,请高手不吝指教.

第1个回答  2007-02-26
刚才给你写的,也不知道你要的是不是这个结果

利用2个不同背景图片的CSS 样式相互切换样式

以下代码全部复制过去就可以用,你要做的就是分别把CSS样式中bg和bg1中的2张图片换成你自己的就OK 了 长度和宽度 你可以根据自己的需要调整

下面是代码

<style type="text/css">
<!--
.bg {
background-image: url(bg0.jpg);
background-repeat: no-repeat;
height: 25px;
width: 149px;
}
.bg1 {
background-image: url(bg.jpg);
background-repeat: no-repeat;
height: 25px;
width: 149px;
}
-->
</style>

<table id=bgimages1 width="149" height="24" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="173" class="bg" onMouseOut="this.className='bg1'" onMouseOver="this.className='bg'"> </td>
</tr>
</table>

随便说以下

在<table><tr>中是一样的调用

<table>中

<table class="bg" onMouseOut="this.className='bg1'" onMouseOver="this.className='bg'" id=bgimages1 width="149" height="24" border="1" cellpadding="0" cellspacing="0">

<tr>中

<tr class="bg" onMouseOut="this.className='bg1'" onMouseOver="this.className='bg'">
第2个回答  2007-02-26
看好了我有个思路
先下图片,但隐起来
在<body>后加一句
<img src="images/2.gif" style="display:none">

参考资料:qcomdd

第3个回答  2007-02-27
在其它地方提前加载所有将要用到的图片,IE就会先下载图片到本地,当下次再碰到相同的路径,就不会去下载了,因为你的图片是在执行JS代码的时候才被加载的,所以要临时下载。这个办法可以用来做漂浮广告,临时加载的东西IE不能通过检查网页代码监视到。
第4个回答  2007-02-26
用层隐藏的方法来试试或许行的。

层1一个背景,层2是一个背景。

首先让层1和层2重叠在一起。默认是层1显示,层2隐藏。写代码实现:当鼠标放到层1上时,层1隐藏,层2显示。

这样就不会出现下载背景图片的时间距离了。
第5个回答  2007-03-08
CSS:隐式载入图片

#preloadedImages {
width: 0px;
height: 0px;
display: inline;
background-image: url(path/to/image1.png);
background-image: url(path/to/image2.png);
background-image: url(path/to/image3.png);
background-image: url(path/to/image4.png);
background-image: url();
}

调用:

<div id="preloadedImages"> </div>本回答被提问者采纳
相似回答