js中Image对象以及对其预加载处理示例


Posted in Javascript onNovember 20, 2013

不显示在文档中的 Image 对象

对于不显示在文档中的 Image 对象时用 var 语句定义的:

var myImage = new Image();或 
var myImage = new Image(<图片地址字符串>);

然后就可以像一般 Image 对象一样对待 myImage 变量了。不过既然它不显示在文档中,以下属性:lowsrc, width, height, vspace, hspace, border 就没有什么用途了。一般这种对象只有一个用:预读图片(preload)。因为当对对象的 src 属性赋值的时候,整个文档的读取、JavaScript 的运行都暂停,让浏览器专心的读取图片。预读图片以后,浏览器的缓存里就有了图片的 Copy,到真正要把图片放到文档中的时候,图片就可以立刻显示了。现在的网页中经常会有一些图像连接,当鼠标指向它的时候,图像换成另外一幅图像,它们都是先预读图像的。

预读图像的 JavaScript 例子

var imagePreload = new Image(); imagePreload.src = '001.gif'; 
imagePreload.src = '002.gif'; 
imagePreload.src = '003.gif';

以上例子适合预读少量图片。
function imagePreload() { 
var imgPreload = new Image(); 
for (i = 0; i < arguments.length; i++) { 
imgPreload.src = arguments[i]; 
} 
} imagePreload('001.gif', '002.gif', '003.gif', '004.gif', '005.gif');

以上例子适合预读大量图片。

因为许多浏览器存在的缓存问题。当图片加载过一次之后,如果再有对该图片的请求时,由于浏览器已经缓存住这张图片了,不会再发起一次新的请求,而是直接请缓存中加载过来,经过分析,可以使用各个浏览器所兼容的Image的属性--complete。所以在图片onload事件之前先对这个值做下判断即可,如下例子:

function loadImage(url, callback) { 
var img = new Image(); //创建一个Image对象,实现图片的预下载 
img.src = url; if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数 
callback.call(img); 
return; // 直接返回,不用再处理onload事件 
} 
img.onload = function () { //图片下载完毕时异步调用callback函数。 
callback.call(img);//将回调函数的this替换为Image对象 
}; 
};
Javascript 相关文章推荐
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
Sep 05 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 Javascript
JS按字节截取字符长度实例
Nov 20 #Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 #Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 #Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 #Javascript
jQuery对html元素取值与赋值的方法
Nov 20 #Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 #Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 #Javascript
You might like
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
php实现删除空目录的方法
2015/03/16 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
javascript判断office版本示例
2014/04/11 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python3实现点餐系统
2019/01/24 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
python数据挖掘需要学的内容
2019/06/23 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
python中如何写类
2020/06/29 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
人民教师的自我评价分享
2014/02/21 职场文书
班班通项目实施方案
2014/02/25 职场文书
《乞巧》教学反思
2014/02/27 职场文书
领导欢迎词范文
2015/01/26 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL