动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网页制作 > Javascript教程
网页制作:Dreamweaver教程,FrontPages教程,Javascript教程,HTML教程,CSS教程,心得技巧,DHTML教程,网页特效,Discuz!论坛
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Javascript教程 ]的信息

本月文章推荐
.仿Office 2003的工具条.
.JavaScript实现页面之间传递参数.
.突破IE屏蔽限制,自己的网站使劲.
.Javascript代码混淆综合解决方案.
.javascript操作cookie.
.javascript实现datagrid客户端ch.
.图片控制的渐变色文字.
.完美解决一个事件激活多个函数(2).
.在Javascript中使用正则表达式.
.用JavaScript实现利用FLASH嵌入声.
.一步一步教你用JS和INF编辑注册表.
.用Javascript轻松制作一套简单的.
.在IE浏览器中正确显示PNG透明图片.
.冒泡算法的三种JavaScript表示.
.javascript应用:实现复选框全选.
.js入门·循环与判断/利用函数的简.
.在b/s开发中经常用到的javascrip.
.Email地址加密javascript版.
.Javascript获取地址参数.
.Javascript中判断润年简单的代码.

预装载以及JavaScript Image()对象

文章类别:Javascript教程 | 发表日期:2004-8-27 |


    大量采用高解析度的图像的确可以让一个Web站点容光焕发。但同样也会造成站点访问速度下降——图片是文件,文件就要占用带宽,而带宽直接同访问等待时间相关。现在,让我们来学习一种名为图像预装载(image preloading)的小技巧来提高图像访问速度。

    一些浏览器试图通过在本地缓存中保存这些图片来解决此问题。这样一来可以顺序调用这些图片——但对于首次使用这些图片的时候仍然会存在延时。预装载就是一种在需要图片之前就将图片下载到缓存的技术。采用这样的方式可以使当确实需要显示图片时迅速将其从缓存中恢复回来并立即显示。

Image()对象
最简单的图像预装载办法是使用JavaScript新建一个新的Image()对象,然后将希望预装载的图片URL传递给此对象。假设我们拥有一个名为heavyimagefile.jpg的图片文件,我们希望当用户鼠标指针移动到一张已有的图片上时显示此文件。为了能更快的对此文件进行预装载,我们简单的创建了一个名为heavyImage的新Image() 对象,然后将其通过onLoad()事件句柄同步装载到页面上。

<html>

<head>

<script language = "JavaScript">

function preloader()

{

     heavyImage = new Image();

     heavyImage.src = "heavyimagefile.jpg";

}

</script>

</head>

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

<a href="#" onMouseOver="javascript:document.img01.src='heavyimagefile.jpg'">

<img name="img01" src="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='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效果响应多种办法中的一种。在站点中可以使用以上技术,并且根据实际情况进行调整。祝一切顺利!


上一篇:一个简单的javascript菜单 人气:29804
下一篇:在网页中控制wmplayer播放器 人气:30270
点击此处浏览全部JavaScript的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報