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中的稀疏数组与密集数组[译]
Sep 17 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
使用jQueryMobile实现滑动翻页效果的方法
Feb 04 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
图文详解JavaScript的原型对象及原型链
Aug 02 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 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 array_walk() 数组函数
2011/07/12 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
js中判断控件是否存在
2010/08/25 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
angularjs基础教程
2014/12/25 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
JS实现多选框的操作
2020/06/24 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python实现识别手写数字 python图像识别算法
2020/03/23 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
美容院营销方案
2014/03/05 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
旷课检讨书
2015/01/26 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python