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 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
javascript确认框的三种使用方法
Dec 17 Javascript
webapp框架AngularUI的demo改造之路
Dec 21 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
对javascript继承的理解
Oct 11 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 Javascript
React.js中常用的ES6写法总结(推荐)
May 09 Javascript
Javascript创建类和对象详解
May 31 Javascript
Vue使用vue-cli创建项目
Sep 01 Javascript
vue封装swiper代码实例解析
Oct 08 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
在JavaScript中调用php程序
2009/03/09 PHP
Linux中为php配置伪静态
2014/12/17 PHP
php微信支付接口开发程序
2016/08/02 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
python生成词云的实现方法(推荐)
2017/06/13 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
pytorch 常用线性函数详解
2020/01/15 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
艺术用品:Arteza
2018/11/25 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
存储过程和函数的区别
2013/05/28 面试题
理想点亮人生演讲稿
2014/05/21 职场文书
啤酒节策划方案
2014/05/28 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
结婚保证书
2015/01/16 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python