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 相关文章推荐
JavaScript中的作用域链和闭包
Jun 30 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
vue-router项目实战总结篇
Feb 11 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
浅谈手写node可读流之流动模式
Jun 01 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
第三节--定义一个类
2006/11/16 PHP
php写的简易聊天室代码
2011/06/04 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
srcElement表格样式
2006/09/03 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
js 幻灯片的实现
2011/12/06 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
答题辅助python代码实现
2018/01/16 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python callable内置函数原理解析
2020/03/05 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
如何查看python关键字
2021/01/17 Python
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
编程输出如下图形
2013/11/24 面试题
公务员个人自我评价分享
2013/11/06 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
财产保全担保书
2015/01/20 职场文书
简单聊聊Golang中defer预计算参数
2022/03/25 Golang