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 AutoScroller 函数类
May 29 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
Jun 26 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
jQuery插件开发汇总
May 15 Javascript
AngularJS 遇到的小坑与技巧小结
Jun 07 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
js字符串操作总结(必看篇)
Nov 22 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
Jul 07 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
electron踩坑之remote of undefined的解决
Oct 06 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
在PHP的图形函数中显示汉字
2006/10/09 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php 特殊字符处理函数
2008/09/05 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python 装饰器深入理解
2017/03/16 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
应聘医学检验人员自荐信
2013/09/27 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
开工仪式主持词
2014/03/20 职场文书
司机岗位职责说明书
2014/07/29 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
十二生肖观后感
2015/06/12 职场文书
导游词之桂林
2019/08/20 职场文书
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android