|
主题: 怎么做一个预下载
|
 hzszj
职务:普通成员
等级:1
金币:1.0
发贴:158
注册:2001/3/1 12:06:05
|
#12002/7/13 20:09:06
我相做一个预下载,当用户在看首的时候,就开始预下载内页的图片,这种效果用js怎么做呀,有人知道吗?
|
 ahxiao
职务:普通成员
等级:1
金币:10.0
发贴:304
注册:2001/6/8 16:34:26
|
|
 缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
|
#32002/7/13 20:20:38
或者用iframe。原理还是暗中预先下载~~
|
 gelaninwind
职务:普通成员
等级:1
金币:0.0
发贴:5
注册:2002/7/13 19:49:35
|
#42002/7/13 20:28:25
郭涛 (08/17/2000) 为了使主页更有动感,有一些朋友在主页中加入了能够响应鼠标onmouseover等事件的动态按扭。费了半天劲做好的按扭虽然在本地(自己的计算机)的浏览器里感觉效果很不错,但传到网上一看满不是那么回事。本来鼠标挪到按扭上应该产生变化了,但等了半天那张图片才出现,想一想其它的浏览者,谁会把鼠标停在按扭上等着看你那张按扭图片出现呢。那不是费力不讨好吗,可这种效果确实很吸引人所以又不想放弃,那怎么办?我来告诉你。
首先我们要明白这种按扭的效果是怎么产生的,让我们先看一个简单的例子。
<a href=garget.html onmouseover="document.images['imagename'].src='image_over.gif';"
onmouseout="document.images['imagename'].src='image.gif';">
<img src=image.gif name=imagename></a>
我们可以看到当浏览器接收到onmouseover事件后将在浏览器上找“image_over.gif"并下载,这个过程是需要时间的。但是我们需要的是变化在一瞬间立即发生,那么我们就需要浏览器提前把“image_over.gif"下载到本地,这就是我说的“预先下载”(preloading)。下面我就用三种不同的方法来实现它。
一. 种方法很简单,你所要做的就是在页面的底部(最不起眼的地方)放上你希望预先下载的图片。不过图片需要以一个象素的大小出现,这样几乎没人能注意到。代码如下。
<IMG SRC=“image1.gif" height=1 width=1 border=0>
<IMG SRC=“image2.gif" height=1 width=1 border=0>
<IMG SRC=“image3.gif" height=1 width=1 border=0>
<IMG SRC=“image4.gif" height=1 width=1 border=0>
<IMG SRC=“image5.gif" height=1 width=1 border=0>
但是如果你的背静色和图象的颜色反差很大的话,图象就会被别人看出来了,反正不是很美观。那么看看下一种吧。
二. 这种方法要比上一种好一些,图片通过javascript语言被预先调到内存,速度很快。代码里还加入了浏览器的探测,如果你的浏览器不支持onmouseover那么就不做下载。代码如下。
<Script language=“javascript">
browser_name = navigator.appName;
browser_version = parseFloat(navigator.appVersion);
if (browser_name == “Netscape" && browser_version >= 3.0)
{
roll =‘true';
}
else if (browser_name == “Microsoft Internet Explorer" && browser_version >= 4.0)
{
roll =‘true';
}
else
{
roll =‘false';
}
if (roll == 'true')
{
<!--这就是你要预下载的图片
var imglist = new Array (
“iface/a_aaa.gif",
“iface/a_bvt.gif",
“iface/a_email.gif",
“iface/a_fimages.gif",
“iface/a_links.gif",
“iface/a_misc.gif"
);
var imgs = new Array();
var count;
if (document.images)
{
for (count=0; count {
imgs[count]=new Image(); imgs[count].src=imglist[count];
}
}
// -->
</script>
三. 这种方法看起来更清楚,速度最快,效果也最好。它把原图和onmouseover的图片一起下载到本地。这样,错后的现象就不可能发生了。代码如下。
<script>
lt;!-- Image Preload Script
if (document.images)
{
image1on = new Image(); image1on.src =“images/b_home2.gif";
image2on = new Image(); image2on.src = “images/b_req2.gif";
image3on = new Image(); image3on.src = “images/b_office2.gif";
image4on = new Image(); image4on.src = “images/b_about2.gif";
image1off = new Image(); image1off.src = “images/b_home1.gif";
image2off = new Image(); image2off.src = “images/b_req1.gif";
image3off = new Image(); image3off.src = “images/b_office1.gif";
image4off = new Image(); image4off.src = “images/b_about1.gif";
}
function turnOn(imageName)
{
if (document.images)
{
document[imageName].src = eval(imageName + “on.src");
}
}
function turnOff(imageName)
{
if (document.images)
{
document[imageName].src = eval(imageName +“off.src");
}
}
</script>
然后把按扭处的代码改一下。
<a href=“home.htm" onMouseOver=“turnOn(‘image1')" onMouseOut=“turnoff(‘image1')">
<img name=“image1" src=“images/b_home1.gif" alt=“Home" width=145 height=35 border=0>
三种方法都说完了,还是先实践一下再决定选择哪种吧。
|
 缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
|
#52002/7/13 20:31:45
加一句:上面的代码注意一下全角和半角符号,比如<>和" ".
|
 gelaninwind
职务:普通成员
等级:1
金币:0.0
发贴:5
注册:2002/7/13 19:49:35
|
#62002/7/13 20:47:01
无缺在上个帖子中说 引用: 加一句:上面的代码注意一下全角和半角符号,比如<>和" ".
是啊是啊(汗~~~~)
|
 网浪儿
职务:普通成员
等级:1
金币:0.0
发贴:95
注册:2002/1/11 22:56:21
|
#72002/7/14 9:32:25
一席话语另本菜鸟茅塞顿开!
我更加热爱我们的5D了!
|