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 相关文章推荐
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
页面调用单个swf文件,嵌套出多个方法。
Nov 21 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 Javascript
javascript中this的四种用法
May 11 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
js实现淡入淡出轮播切换功能
Jan 13 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
May 22 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
php比较两个绝对时间的大小
2014/01/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
js更优雅的兼容
2010/08/12 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
Python编程求质数实例代码
2018/01/31 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
车间副主任岗位职责
2013/12/24 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
2014年实验室工作总结
2014/12/03 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
合作协议书格式范本
2016/03/21 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸