`
Breese
  • 浏览: 62923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

图片预加载做法

 
阅读更多

/**
* 图片头数据加载就绪事件 - 更快获取图片尺寸
* @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);
};
};
})();

分享到:
评论

相关推荐

    理解Javascript图片预加载

    图片预加载是一种提升用户上网体验的技术,尤其是在图片占网站内容比重较大的网站中,它能保证图片的快速、无缝加载。预加载的基本原理是将图片预先下载并缓存到用户浏览器中,当用户浏览到实际需要显示图片的页面时...

    iOS webview Hybrid开发预加载.zip

    预加载是优化Webview性能的关键策略,尤其是在资源密集型的应用中。本篇文章将深入探讨iOS Webview与Hybrid开发中的预加载技术。 首先,我们来理解一下什么是iOS Webview。Webview是iOS SDK提供的一种组件,它能够...

    CSS 实现网页图片的预加载

    然而,并非所有图片都适合预加载,因为预加载也会占用网络带宽,对于不重要的或者大尺寸的资源,过度预加载可能会增加页面的加载时间,反而对性能产生负面影响。 在实际应用中,应根据具体情况进行优化,例如考虑...

    解析javascript图片懒加载与预加载的分析总结

    图片懒加载与预加载是前端开发中优化页面性能的两种常用技术,它们各自有不同的实现方式和应用场景,通过合理利用这两种技术,可以有效提升用户体验和减少服务器负载。 首先,我们来探讨懒加载(Lazy Loading)技术...

    关于图片的预加载过程中隐藏未知的

    在前端开发中,图片预加载是一项常见的优化技术,目的是在用户真正需要查看图片之前提前加载,从而提高用户体验。本文将详细讨论预加载过程中可能出现的问题,特别是与JavaScript内存泄漏和动态图片处理相关的潜在...

    jQuery图片懒加载代码

    - **预加载**:除了按需加载,也可以预先加载用户可能很快会看到的图片。 - **响应式**:考虑不同设备的视口大小,确保图片在任何屏幕尺寸下都能正确加载。 - **动画效果**:在图片加载前后添加过渡动画,提升用户...

    图片延迟加载

    例如,对于移动设备,由于网络环境可能不稳定,需要考虑到预加载或提前加载一部分图片以减少用户等待。此外,对于屏幕分辨率和设备方向变化,图片加载逻辑也需要能够适应调整。同时,确保在图片加载前后保持页面布局...

    预加载css或javascript的js代码

    预加载CSS或JavaScript文件是网页优化的常见做法之一。它旨在提高页面加载速度和用户体验,确保当用户需要使用到这些文件时,它们已经被加载,从而减少了用户需要等待的时间。在用户浏览网站的同时,通过预加载技术...

    js中Image对象以及对其预加载处理示例

    而图片预加载是网页性能优化的一个重要方面,尤其在涉及到动态更换图片的场景中。预加载可以减少用户在交互时感受到的延迟,提高用户体验。现在,让我们深入探讨JavaScript中Image对象的使用方法以及如何高效地进行...

    再谈javascript图片预加载技术(详细演示)

    JavaScript图片预加载技术是网页开发中的一个重要技巧,尤其对于那些依赖大图或者多图展示的网站,如Lightbox效果,可以显著提升用户体验。由于JavaScript在处理图片时无法直接获取到图片文件头的数据,这意味着在...

    JS实现预加载视频音频/视频获取截图(返回canvas截图)

    在当前的Web开发实践中,对于音频和视频的预加载以及视频截图功能的需求非常普遍。通过JavaScript实现这些功能,可以极大地提升用户体验。本篇将详细介绍如何使用JavaScript来预加载视频和音频资源,并在视频播放时...

    js图片延迟加载,亲测

    5. **预加载策略**:对于某些关键图片,如首屏图片,可以使用预加载策略,在页面加载时就进行加载,确保用户一打开页面就能看到完整内容。 通过以上步骤,我们可以实现一个简单的JavaScript图片延迟加载功能,这个...

    android异步加载图片

    在Gallery中,我们可以监听其滚动事件,预加载即将进入视野的图片,同时取消不再需要的图片加载任务,以节省资源。 `Pager`通常指的是ViewPager,用于创建滑动的页面效果,常用于实现类似相册的功能。在ViewPager中...

    封装Picasso加载图片指定大小 旋转 高斯模糊

    预加载?用base64直接带了一些缩略图在普通的REST请求中,对于一些小缩略图做法还是挺有效的,减少连接数,减轻了各类硬件资源冗余使用? 其实很多时候,我们在客户端做了很多工作,却忽略了我们完全可以将这些操作放到...

    一个简单实用的瀑布流加载图片

    可以考虑使用预加载策略,分批次加载图片,避免一次性加载过多导致页面卡顿。同时,使用合适的图片格式(如WebP或JPEG 2000)和压缩率,可以进一步减小图片的体积,提高加载速度。 在压缩包"fallswater"中,可能...

    visual c++ vc mfc加载显示jpg图片.zip

    在Visual C++ (VC++) 和MFC (Microsoft Foundation Classes) 中加载并显示JPEG图片是一项常见的任务,尤其是在开发图形用户界面的应用程序时。本教程将详细解释如何使用MFC来实现这个功能,主要涉及的知识点包括MFC...

    android图片浏览

    对于滑动列表,关键在于高效的滚动性能,这需要正确处理图片的复用(比如,使用convertView机制)和预加载策略。对于图片查看器,可能需要支持手势缩放、平移等交互功能,同时保持良好的性能。 在处理图片时,...

Global site tag (gtag.js) - Google Analytics