javascript图片预加载技术.doc_第1页
javascript图片预加载技术.doc_第2页
javascript图片预加载技术.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小,所以lightbox类效果为了让图片居中显示,导致其速度体验要比直接输出的差很多。而本文所提到的预加载技术主要是让javascript快速获取图片头部数据的尺寸。一段典型的使用预加载获取图片大小的例子:var imgLoad = function (url, callback) var img = new Image();img.src = url;if (plete) callback(img.width, img.height); else img.onload = function () callback(img.width, img.height);img.onload = null;可以看到使用onload的方式必须等待图片加载完毕,其速度不敢恭维。web应用程序区别于桌面应用程序,响应速度才是最好的用户体验。如果想要速度与优雅兼得,那就必须提前获得图片尺寸,如何在图片没有加载完毕就能获取图片尺寸?十多年的上网经验告诉我:浏览器在加载图片的时候你会看到图片会先占用一块地然后才慢慢加载完毕,并且这里大部分的图片都是没有预设width与height属性的,因为浏览器能够获取图片的头部数据。基于此,只需要使用javascript定时侦测图片的尺寸状态便可得知图片尺寸就绪的状态。实现代码:var imgReady = function (url, callback, error) var width, height, intervalId, check, div,img = new Image(),body = document.body;img.src = url;/ 从缓存中读取if (plete) return callback(img.width, 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 = img.offsetHeight;check = function () if (img.offsetWidth != width | img.offsetHeight != height) clearInterval(intervalId);callback(img.offsetWidth, img.clientHeight);img.onload = null;div.innerHTML = ;div.parentNode.removeChild(div);intervalId = setInterval(check, 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.parentNode.removeCh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论