


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
由于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 忻州市中医院术中放射防护考核
- 吕梁市中医院压力治疗技术考核
- 朔州市中医院急救护理能力考核
- 石家庄市人民医院中药用药指导考核
- 2025年中国三氯氢硅项目投资计划书
- 2025年信息化设备及系统升级改造项目可行性研究报告
- 2025年中国芦荟单糖项目商业计划书
- 上海市人民医院疲劳管理技能考核
- 阳泉市中医院选择性神经根阻滞考核
- fmscms源码购买合同6篇
- 气雾化激光熔覆用铁基合金粉末工艺技术规范
- 智能控制系统的优化与控制策略-深度研究
- 2025年上半年上海市博物馆拟聘人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年学校办公室个人总结样本(二篇)
- 余热发电流程图
- 装饰装修工程安全文明施工方案
- 高教社马工程伦理学(第二版)教学课件05
- 《快速记忆训练》课件
- 喉癌术后护理疑难病例讨论
- 2024-2025学年广东省深圳市高二上学期11月期中考试数学检测试题(附解析)
- 2024年医院廉政建设责任书
评论
0/150
提交评论