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的CDATA类型的字段的代码
Apr 22 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
『jQuery』取指定url格式及分割函数应用
Apr 22 Javascript
javascript连续赋值问题
Jul 08 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
老生常谈原生JS执行环境与作用域
Nov 22 Javascript
详解es6超好用的语法糖Decorator
Aug 01 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
May 21 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
js实现图片上传到服务器和回显
Jan 19 Javascript
微信小程序用户登录和登录态维护的实现
Dec 10 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 开源框架22个简单简介
2009/08/24 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
13个PHP函数超实用
2015/10/21 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
一份python入门应该看的学习资料
2018/04/11 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
python绘制彩虹图
2019/12/16 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
python与js主要区别点总结
2020/09/13 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
加拿大探亲邀请信
2014/01/28 职场文书
安全责任协议书
2014/04/21 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js