javascript图片预加载技术

javascript图片预加载技术

ID:11537558

大小:15.86 KB

页数:3页

时间:2018-07-12

javascript图片预加载技术_第1页
javascript图片预加载技术_第2页
javascript图片预加载技术_第3页
资源描述:

《javascript图片预加载技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小,所以lightbox类效果为了让图片居中显示,导致其速度体验要比直接输出的差很多。而本文所提到的预加载技术主要是让javascript快速获取图片头部数据的尺寸。一段典型的使用预加载获取图片大小的例子:varimgLoad=function(url,callback){varimg=newImage();img.src=url;if(img.complete){callback(img.width,img.heig

2、ht);}else{img.onload=function(){callback(img.width,img.height);img.onload=null;};};};可以看到使用onload的方式必须等待图片加载完毕,其速度不敢恭维。web应用程序区别于桌面应用程序,响应速度才是最好的用户体验。如果想要速度与优雅兼得,那就必须提前获得图片尺寸,如何在图片没有加载完毕就能获取图片尺寸?十多年的上网经验告诉我:浏览器在加载图片的时候你会看到图片会先占用一块地然后才慢慢加载完毕,并且这里大部分的图片都是没

3、有预设width与height属性的,因为浏览器能够获取图片的头部数据。基于此,只需要使用javascript定时侦测图片的尺寸状态便可得知图片尺寸就绪的状态。实现代码:varimgReady=function(url,callback,error){varwidth,height,intervalId,check,div,img=newImage(),body=document.body;img.src=url;//从缓存中读取if(img.complete){returncallback(img.w

4、idth,img.height);};//通过占位提前获取图片头部数据if(body){div=document.createElement('div');div.style.cssText='visibility:hidden;position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden';div.appendChild(img)body.appendChild(div);width=img.offsetWidth;height

5、=img.offsetHeight;check=function(){if(img.offsetWidth!==width

6、

7、img.offsetHeight!==height){clearInterval(intervalId);callback(img.offsetWidth,img.clientHeight);img.onload=null;div.innerHTML='';div.parentNode.removeChild(div);};};intervalId=setInterval(che

8、ck,150);};//加载完毕后方式获取img.onload=function(){callback(img.width,img.height);img.onload=img.onerror=null;clearInterval(intervalId);body&&img.parentNode.removeChild(img);};//图片加载错误img.onerror=function(){error&&error();clearInterval(intervalId);body&&img.pare

9、ntNode.removeChild(img);};};是不是很简单?这样的方式获取摄影级别照片尺寸的速度往往是onload方式的几十多倍,而对于web普通(800×600内)浏览级别的图片能达到秒杀效果。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。