大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> Script -> 预装载以及JavaScript Image()对象

预装载以及JavaScript Image()对象

时间: 2021-07-31 作者:daque

    洪量沿用高领会度的图像简直不妨让一个web站点高视阔步。但同样也会形成站点考察速率低沉——图片是文献,文献就要占用带宽,而带宽径直同考察等候功夫关系。此刻,让咱们来进修一种名为图像预承载(image preloading)的小本领来普及图像考察速率。

    少许欣赏器试图经过在当地缓存中生存那些图片来处置此题目。如许一来不妨程序挪用那些图片——但对于初次运用那些图片的功夫仍旧会生存延时。预承载即是一种在须要图片之前就将图片载入到缓存的本领。沿用如许的办法不妨使当真实须要表露图片时赶快将其从缓存中回复回顾并登时表露。

image()东西最大略的图像预承载方法是运用javascript兴建一个新的image()东西,而后将蓄意预承载的图片url传播给此东西。假如咱们具有一个名为http://www.okasp.com/techinfo/heavyimagefile.jpg的图片文献,咱们蓄意当用户鼠标南针挪动到一张已有的图片上时表露此文献。为了能更快的对此文献举行预承载,咱们大略的创造了一个名为heavyimage的新image() 东西,而后将其经过onload()事变句柄同步承载到页面上。

<html>

<head>

<script language = "javascript">

function preloader()

{

     heavyimage = new image();

     heavyimage.src = "http://www.okasp.com/techinfo/heavyimagefile.jpg";

}

</script>

</head>

<body onload="javascript:preloader()">

<a href="#" onmouseover="javascript:document.img01.src='http://www.okasp.com/techinfo/heavyimagefile.jpg'">

<img name="img01" src="http://www.okasp.com/techinfo/justanotherfile.jpg"></a>

</body>

</html>

    提防,图片的标签(tag)自己并不处置onmouseover()以及onmouseout()事变,这也恰是上头示例中的<img>标签被囊括在<a>标签中的因为。标签<a>则囊括了对那些事变典型的扶助。

经过数组(arrays)承载多个图片

在本质情景中,你很有大概须要预承载不只一张的图片;比方,对于囊括多个图片的菜单条,大概蓄意实行光滑的动画功效。要实行那些并不艰巨,只须要运用javascript的数组,如次例所示:

<script language="javascript">

  function preloader()

{

     // counter

     var i = 0;

     // create object

     imageobj = new image();

     // set image list

     images = new array();

     images[0]="image1.jpg"

     images[1]="image2.jpg"

     images[2]="image3.jpg"

     images[3]="image4.jpg"

     // start preloading

     for(i=0; i<=3; i++)

     {

          imageobj.src=images[i];

     }

}

</script>

在上头的例子中,设置了变量i以及名为imageobj的image()东西。而后设置了新数组images[],每一个数组元素将保存须要预承载图片的地方根源。结果,运用一个for()轮回来遍历所有数组,并对每个元素指定image()东西,以此将图片都预承载到缓存中。

next page

preloading and the javascript image() object

onload()事变句柄(event handler)同javascript中的很多其余东西一律,image()东西同样有很多事变句柄。毫无疑义,个中最有效的是onload()句柄,它在图片实足承载时被挪用。在图片实足承载之后,不妨经过自设置因变量来挪用此句柄实行一定的功效。下例就给出了沿用如许的本领实行如次举措的代码:当承载图片时表露“please wait”屏幕,而后一旦实行承载,就把欣赏器启发到一个新的url。

  <html>

<head>

<script language="javascript">

// create an image object

objimage = new image();

   

// set what happens once the image has loaded

objimage.onload=imagesloaded();

    

// preload the image file

objimage.src='http://www.okasp.com/techinfo/images/image1n.gif';

// function invoked on image load

function imagesloaded()

{   

     document.location.href='index2.html';

}

</script>

</head>

<body>

please wait, loading images...

</body>

</html>

固然,你也不妨创造一个图片数组,而后轮回,对每个元素举行预承载,而后盯梢每个阶段所承载的图片数目。一旦一切的图片都被承载,不妨对事变句柄编制程序,以将欣赏器带入下一个阶段(或实行其余的工作)。

预承载和多状况(multi-state)菜单此刻,怎样将方才进修到的一切表面常识运用到本质的运用步调中?底下是一段我迩来编写的代码——一个囊括按钮(图片链接)的菜单条,每一个按钮都大概居于三种状况中的一种:平常、鼠标悬浮和单击。因为按钮具备多种状况,以是必需运用图片预承载来保证菜单能充满快的对状况变换举行相应。列表a中的代码表露了怎样实行此功效:

  列表a中的html代码创造了一个囊括四个按钮的菜单条,每一个按钮都有三种状况:平常、鼠标悬浮和单击。触发前提如次:

鼠标南针挪动四处于平常状况的按钮,按钮则变为鼠标悬浮状况。鼠标移出按钮地区之后,按钮归来到平常状况。

鼠标单击按钮,按钮则变为单击状况。在另一按钮被单击之前,它将维持在此状况。

即使单击了某个按钮,其余任何按钮不许居于单击状况,只能是居于鼠标悬浮或平常状况。

历次只能单击一个按钮。

历次只能有一个按钮居于鼠标悬浮状况。

重要工作是树立保存菜单每种状况图片的数组。数组元素相映的元素<img>同样在html文书档案主体中创造,而且依照程序定名。请提防,数组值的索引序列是从0发端,而相映的<img>元素则从1发端定名——这就诉求在剧本的后半段要对相映数值作演算安排。

因变量preloadimages()控制将一切图片承载到缓存中,所以留给鼠目标相应功夫就会很少。轮回for()被用来在第一阶段反复实行图片创造操纵,并随后对每个图片举行预承载。

因变量resetall()是将一切图片重置为平常状况的特殊简单的本领。这是必定的,由于当菜单上某个按钮被单击的功夫,菜单上头其余一切按钮在被单击按钮变换状况前必需回复到平常状况。

因变量setnormal()、sethover()以及setclick()控制将一定图像(图像编号将动作因变量参数传播)的图影片来源变换为相映平常、鼠标悬浮或单击状况的图影片来源。因为被单击的图像在另一图像被单击之前必需维持状况(参考准则#2),所以被单击图片将暂不接收鼠标举措。因变量setnormal()以及sethover()代码仅实行图片不在单击状况的情景下变换图片状况的举措。

之上不过经过运用预承载本领加快javascript功效相应多种方法中的一种。在站点中不妨运用之上本领,而且按照本质情景举行安排。祝十足成功!

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.