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 相关文章推荐
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
javascript遇到html5的一些表单属性
Jul 05 Javascript
浅析javascript函数表达式
Feb 10 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
js常用DOM方法详解
Feb 04 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
Jun 08 Javascript
fastadmin中调用js的方法
May 14 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
模仿OSO的论坛(三)
2006/10/09 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JS作用域深度解析
2016/12/29 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
分享一个常用的Python模拟登陆类
2015/03/29 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
商务英语专业毕业生自荐信
2013/11/05 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
入党现实表现材料
2014/12/23 职场文书
小学生学习保证书
2015/02/26 职场文书
护理工作心得体会
2016/01/22 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis