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 DOM学习第一章 W3C DOM简介
Feb 19 Javascript
跨浏览器的事件对象介绍
Jun 27 Javascript
javascript使用数组的push方法完成快速排序
Sep 15 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
require.js的用法详解
Oct 20 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
js实现仿购物车加减效果
Mar 01 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
May 07 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
May 16 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 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 zend解密软件绿色版测试可用
2008/04/14 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
Javascript开发包大全整理
2006/12/22 Javascript
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python多线程同步之文件读写控制
2021/02/25 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
专业销售业务员求职信
2013/11/18 职场文书
四年级数学教学反思
2014/02/02 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
促销活动方案模板
2014/02/24 职场文书
升职感谢信
2015/01/22 职场文书
酒会开场白大全
2015/06/01 职场文书
决心书格式及范文
2019/06/24 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python