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实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
使用console进行性能测试
Apr 27 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
leaflet的开发入门教程
Nov 17 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
基于jQuery实现定位导航位置效果
Nov 15 jQuery
微信小程序实现添加手机联系人功能示例
Nov 30 Javascript
Vue2.X 通过AJAX动态更新数据
Jul 17 Javascript
JavaScript类型相关的常用操作总结
Feb 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
django中的ajax组件教程详解
2018/10/18 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
javascript实现计算器功能
2020/03/30 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
python中self原理实例分析
2015/04/30 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python Kmeans算法原理深入解析
2019/08/23 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
小学教师听课制度
2014/02/01 职场文书
开业主持词
2014/03/21 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
KTV员工管理制度
2015/08/06 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
P站美图推荐——变身女主角特辑
2022/03/20 日漫
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL