当前位置:  编程技术>jquery

jquery 图片预加载代码一例

    来源: 互联网  发布时间:2014-09-03

    本文导语:  对于同一页面展示大量图处的情况,可以考虑实现预加载,并且动态计算宽高实现等比例缩放. 代码: // 参数: 图片地址, 尺寸就绪事件, 完全加载事件, 加载错误事件 imgReady(imgUrl, function () { statusReady.innerHTML = '耗时 ' + (time.sto...

对于同一页面展示大量图处的情况,可以考虑实现预加载,并且动态计算宽高实现等比例缩放.
代码:

// 参数: 图片地址, 尺寸就绪事件, 完全加载事件, 加载错误事件
imgReady(imgUrl, function () {
 statusReady.innerHTML = '耗时 ' + (time.stop() / 1000) +' 秒. 宽度: ' + this.width + '; 高度: ' + this.height;
  checkboxFn();
}, function () {
 statusLoad.innerHTML = '耗时 ' + (time.stop() / 1000) +' 秒. 宽度: ' + this.width + '; 高度: ' + this.height;
}, function () {
   statusLoad.innerHTML = statusReady.innerHTML = '耗时 ' + (time.stop() / 1000) +' 秒. 加载错误!';
});

函数代码:

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

    
 
 

您可能感兴趣的文章:

  • struts+spring+hibernate+jquery实现分页功能的几个基本类介绍(异步加载)
  • jQuery预加载插件 jQuery-preloader
  • jQuery数据延迟加载插件 DataLazyLoad
  • jQuery 页面加载 fakeLoader.js
  • jQuery页面加载完毕再执行代码多种方法
  • Jquery图片延迟加载插件jquery.lazyload.js的使用方法
  • jQuery 加载器插件 ClassyLoader
  • jQuery 图像延迟加载插件 BttrLazyLoading
  • jQuery 视频延迟加载插件 lazyYT.js
  • JQuery在页面加载完成时执行函数的示例代码
  • jQuery 图像加载插件 ChickenDinner.js
  • jQuery图片加载插件 QueryLoader
  • Jquery在指定DIV加载HTML示例代码
  • jquery为动态加载的元素绑定事件的代码
  • jquery实现在页面加载完毕后获取图片高度或宽度
  • jquery跟js初始化加载的多种方法及区别介绍
  • Jquery图片加载插件 imagesloaded
  • jquery代码-如何检查图像是否已完全加载
  • 在页面加载完成后通过jquery给多个span赋值
  • 使用jQuery动态加载js脚本文件的方法
  • jquery Ajax 实现加载数据前动画效果的示例代码
  • 移动开发 iis7站长之家
  • jquery代码-如何使用jQuery来解析xml
  • jQuery概述,代码举例及最新版下载
  • jquery代码-如何使用jQuery来检测右键和左键的鼠标单击两种情况
  • jQuery 禁用右键菜单的简单代码
  • jquery的父子兄弟节点查找示例代码
  • JQuery实现元素屏幕居中显示的代码
  • jQuery 代码模块化 TerrificJS
  • 在myeclipse中如何加入jquery代码提示功能
  • jquery弹窗代码示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jQuery图片轮换插件 jQuery Dynamic Slideshow
  • jQuery图片预览插件 Jquery Fade In.Fade Out
  • jQuery图片自动放大插件 Greyscale Hover Effect w/ CSS & jQuery
  • jQuery 图片查看 jQuery.Imageview
  • jquery图片淡入淡出与图片切换效果的例子
  • jQuery图片展示插件 Simple Controls Gallery
  • jQuery图片展示插件 Zoomimage
  • jQuery图片显示插件 PrettyPhoto
  • jQuery图片预览插件 Exposure
  • jQuery图片展示插件 Galleria
  • jQuery图片预览插件 imgPreview
  • jQuery 图片库插件 simpleGal
  • jQuery图片标题插件 Captify
  • jQuery图片效果切换 Adipoli
  • Jquery图片滚动插件 BxCarousel
  • jQuery图片滑动幻灯片插件 Orbit
  • jQuery图片展示插件 Pirobox
  • jQuery图片相册插件 Mosaiqy
  • jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
  • jQuery的图片画廊插件 jbgallery
  • Jquery操作html复选框checkbox:全选,全不选和反选
  • jQuery鼠标动画插件 jquery-ahover
  • jQuery向导插件 Jquery Wizard Plugin
  • jQuery圆角插件 jQuery Corners
  • jQuery相册插件 jQuery.popeye
  • jQuery UI组件 jQuery UI
  • jQuery右键菜单插件 jQuery ContextMenu
  • jQuery分页插件 Pagination jQuery Plugin
  • jQuery日历插件 jQuery Week Calendar
  • jQuery的中文日历插件 jQuery.datePickerCn
  • jQuery实现CSS3动画效果的插件 jQuery Transit


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3