/**
* 图片头数据加载就绪事件 - 更快获取图片尺寸
* @version 2011.05.27
* @author TangBin
* @see http://www.planeart.cn/?p=1121
* @param {String} 图片路径
* @param {Function} 尺寸就绪
* @param {Function} 加载完毕 (可选)
* @param {Function} 加载错误 (可选)
* @example imgReady('http://www.google.com.hk/intl/zh-CN/images/logo_cn.png', function () {
alert('size ready: width=' + this.width + '; height=' + this.height);
});
*/
var imgReady = (function () {
var list = [], intervalId = null,
// 用来执行队列
tick = function () {
var i = 0;
for (; i < list.length; i++) {
list[i].end ? list.splice(i--, 1) : list[i]();
};
!list.length && stop();
},
// 停止所有定时器队列
stop = function () {
clearInterval(intervalId);
intervalId = null;
};
return function (url, ready, load, error) {
var onready, width, height, newWidth, newHeight,
img = new Image();
img.src = url;
// 如果图片被缓存,则直接返回缓存数据
if (img.complete) {
ready.call(img);
load && load.call(img);
return;
};
width = img.width;
height = img.height;
// 加载错误后的事件
img.onerror = function () {
error && error.call(img);
onready.end = true;
img = img.onload = img.onerror = null;
};
// 图片尺寸就绪
onready = function () {
newWidth = img.width;
newHeight = img.height;
if (newWidth !== width || newHeight !== height ||
// 如果图片已经在其他地方加载可使用面积检测
newWidth * newHeight > 1024
) {
ready.call(img);
onready.end = true;
};
};
onready();
// 完全加载完毕的事件
img.onload = function () {
// onload在定时器时间差范围内可能比onready快
// 这里进行检查并保证onready优先执行
!onready.end && onready();
load && load.call(img);
// IE gif动画会循环执行onload,置空onload即可
img = img.onload = img.onerror = null;
};
// 加入队列中定期执行
if (!onready.end) {
list.push(onready);
// 无论何时只允许出现一个定时器,减少浏览器性能损耗
if (intervalId === null) intervalId = setInterval(tick, 40);
};
};
})();
发表评论
-
js判断一个图片是否已经存在于缓存
2013-05-31 15:15 7239【解决】js判断一个图片是否已经存在于缓存(兼容IE各版本及 ... -
java 加密解密算法总结(转)
2013-03-19 11:28 837package tianya.cn.main; im ... -
深入了解Struts2返回JSON数据的原理及具体应用范例
2013-03-18 09:40 1197转载自: http://yshjava.iteye.com/ ... -
ICE:slice语言常识整理
2013-01-28 10:53 1750============================== ... -
ICE实例
2013-01-25 17:46 879本文将结合实际项目,做一个基于ice的实际项目实例应用,该实例 ... -
ICE转摘学习
2013-01-25 17:44 795Ice 出自ZeroC名门之 ... -
Google 浏览器css hack 写法
2013-01-16 11:09 749针对Chrome和Safari等Webkit核心浏览器的CS ... -
js 事件冒泡
2012-11-19 14:40 883JavaScript事件冒泡简介及应用 一、什么是事 ... -
ant 常用命令
2012-11-12 22:03 1361C:\>ant -help\-h 获取ant的帮助信息( ... -
jQuery获取tagName的方法
2012-09-29 16:52 715在javascript中要取得tagName十分简单,但在jQ ... -
test
2012-09-06 00:16 0<!DOCTYPE html PUBLIC " ... -
java 访问url获取别人的接口服务
2012-08-09 21:51 0** * 程序中访问http数据接口 ... -
Java IO系统之IO系统类层次关系
2012-08-08 09:13 0流是字节序列的抽象概念。 文件是数据的静态存储形式,而流 ... -
java缓存
2012-08-06 12:47 0JAVA缓存技术 JavaJNICacheL ... -
图片滚动带滚动条
2012-07-25 00:08 821<!DOCTYPE html PUBLIC " ... -
Web.xml文件配置
2012-06-12 23:56 761一个简单的web文件配置参考 <?xml versio ... -
java getResource()和getResourceAsStream以及路径问题(转)
2012-06-12 23:54 854用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还 ... -
MYSQL常用命令
2012-05-27 18:10 740MYSQL常用命令 1.导出整个数据库 mysqldump ... -
hibernate 使用二级缓存 配置
2012-05-26 23:57 1005配置二级缓存主要有两个步骤。 选择需要使用第三方二级缓存 ... -
jQuery.extend函数详解
2012-05-25 17:37 737jQuery.extend 函数详解 JQuery的exten ...
相关推荐
图片预加载是一种提升用户上网体验的技术,尤其是在图片占网站内容比重较大的网站中,它能保证图片的快速、无缝加载。预加载的基本原理是将图片预先下载并缓存到用户浏览器中,当用户浏览到实际需要显示图片的页面时...
预加载是优化Webview性能的关键策略,尤其是在资源密集型的应用中。本篇文章将深入探讨iOS Webview与Hybrid开发中的预加载技术。 首先,我们来理解一下什么是iOS Webview。Webview是iOS SDK提供的一种组件,它能够...
然而,并非所有图片都适合预加载,因为预加载也会占用网络带宽,对于不重要的或者大尺寸的资源,过度预加载可能会增加页面的加载时间,反而对性能产生负面影响。 在实际应用中,应根据具体情况进行优化,例如考虑...
图片懒加载与预加载是前端开发中优化页面性能的两种常用技术,它们各自有不同的实现方式和应用场景,通过合理利用这两种技术,可以有效提升用户体验和减少服务器负载。 首先,我们来探讨懒加载(Lazy Loading)技术...
在前端开发中,图片预加载是一项常见的优化技术,目的是在用户真正需要查看图片之前提前加载,从而提高用户体验。本文将详细讨论预加载过程中可能出现的问题,特别是与JavaScript内存泄漏和动态图片处理相关的潜在...
- **预加载**:除了按需加载,也可以预先加载用户可能很快会看到的图片。 - **响应式**:考虑不同设备的视口大小,确保图片在任何屏幕尺寸下都能正确加载。 - **动画效果**:在图片加载前后添加过渡动画,提升用户...
例如,对于移动设备,由于网络环境可能不稳定,需要考虑到预加载或提前加载一部分图片以减少用户等待。此外,对于屏幕分辨率和设备方向变化,图片加载逻辑也需要能够适应调整。同时,确保在图片加载前后保持页面布局...
预加载CSS或JavaScript文件是网页优化的常见做法之一。它旨在提高页面加载速度和用户体验,确保当用户需要使用到这些文件时,它们已经被加载,从而减少了用户需要等待的时间。在用户浏览网站的同时,通过预加载技术...
而图片预加载是网页性能优化的一个重要方面,尤其在涉及到动态更换图片的场景中。预加载可以减少用户在交互时感受到的延迟,提高用户体验。现在,让我们深入探讨JavaScript中Image对象的使用方法以及如何高效地进行...
JavaScript图片预加载技术是网页开发中的一个重要技巧,尤其对于那些依赖大图或者多图展示的网站,如Lightbox效果,可以显著提升用户体验。由于JavaScript在处理图片时无法直接获取到图片文件头的数据,这意味着在...
在当前的Web开发实践中,对于音频和视频的预加载以及视频截图功能的需求非常普遍。通过JavaScript实现这些功能,可以极大地提升用户体验。本篇将详细介绍如何使用JavaScript来预加载视频和音频资源,并在视频播放时...
5. **预加载策略**:对于某些关键图片,如首屏图片,可以使用预加载策略,在页面加载时就进行加载,确保用户一打开页面就能看到完整内容。 通过以上步骤,我们可以实现一个简单的JavaScript图片延迟加载功能,这个...
在Gallery中,我们可以监听其滚动事件,预加载即将进入视野的图片,同时取消不再需要的图片加载任务,以节省资源。 `Pager`通常指的是ViewPager,用于创建滑动的页面效果,常用于实现类似相册的功能。在ViewPager中...
预加载?用base64直接带了一些缩略图在普通的REST请求中,对于一些小缩略图做法还是挺有效的,减少连接数,减轻了各类硬件资源冗余使用? 其实很多时候,我们在客户端做了很多工作,却忽略了我们完全可以将这些操作放到...
可以考虑使用预加载策略,分批次加载图片,避免一次性加载过多导致页面卡顿。同时,使用合适的图片格式(如WebP或JPEG 2000)和压缩率,可以进一步减小图片的体积,提高加载速度。 在压缩包"fallswater"中,可能...
在Visual C++ (VC++) 和MFC (Microsoft Foundation Classes) 中加载并显示JPEG图片是一项常见的任务,尤其是在开发图形用户界面的应用程序时。本教程将详细解释如何使用MFC来实现这个功能,主要涉及的知识点包括MFC...
对于滑动列表,关键在于高效的滚动性能,这需要正确处理图片的复用(比如,使用convertView机制)和预加载策略。对于图片查看器,可能需要支持手势缩放、平移等交互功能,同时保持良好的性能。 在处理图片时,...