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和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
Jul 21 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
解决Extjs下拉框不显示的问题
Jun 21 Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 Javascript
vue 中filter的多种用法
Apr 26 Javascript
VUE 3D轮播图封装实现方法
Jul 03 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 18 Javascript
jQuery实现购物车全功能
Jan 11 jQuery
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中使用PDF文档功能
2006/10/09 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
解析php中的escape函数
2013/06/29 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
vue下跨域设置的相关介绍
2017/08/26 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
npm qs模块使用详解
2020/02/07 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
python向图片里添加文字
2019/11/26 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
python中shell执行知识点
2020/05/06 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
如何写求职信
2014/05/24 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
销售员岗位职责范本
2015/04/11 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
详解Python类和对象内容
2021/06/22 Python