麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript圖片預加載實例分析

2019-11-20 12:02:12
字體:
來源:轉載
供稿:網友

本文實例講述了javascript圖片預加載的方法。分享給大家供大家參考。具體如下:

lightbox類效果為了讓圖片居中顯示而使用預加載,需要等待完全加載完畢才能顯示,體驗不佳(如filick相冊的全屏效果)。javascript無法獲取img文件頭數據,真的是這樣嗎?本文通過一個巧妙的方法讓javascript獲取它。

這是大部分人使用預加載獲取圖片大小的例子:

var imgLoad = function (url, callback) {  var img = new Image();  img.src = url;  if (img.complete) {    callback(img.width, img.height);  } else {    img.onload = function () {      callback(img.width, img.height);      img.onload = null;    };  };};

JavaScript代碼:

// 更新:// 05.27: 1、保證回調執行順序:error > ready > load;2、回調函數this指向img本身// 04-02: 1、增加圖片完全加載后的回調 2、提高性能/** * 圖片頭數據加載就緒事件 - 更快獲取圖片尺寸 * @version 2011.05.27 * <a  class="referer" target="_blank">@author</a> TangBin * <a  class="referer" target="_blank">@see</a>   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);    };  };})();

調用例子:

imgReady('http://www.google.com.hk/intl/zh-CN/images/logo_cn.png', function () {  alert('size ready: width=' + this.width + '; height=' + this.height);});

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久精品视频免费看 | 色悠悠久久久久 | 毛片在线视频在线播放 | 欧美国产91 | 13一14毛片免费看 | 国产一级在线免费观看 | 最污网站 | 视频国产一区二区 | 免费日韩片| 一区二区三区日韩 | 欧美日韩亚洲在线观看 | 欧美成人精品h版在线观看 久久久久久三区 | 亚洲无马在线观看 | 麻豆一区二区99久久久久 | 毛片av网址 | 久久精品国产清自在天天线 | av在线免费播放网站 | 毛片午夜| 免费嗨片首页中文字幕 | 国产一区二区三区欧美 | 播色网 | 欧美日韩免费在线观看视频 | 77成人影院 | 成码无人av片在线观看网站 | 99riav国产在线观看 | 免费国产一级特黄久久 | 黄色一级视频 | 国产免费v片 | 国产免费最爽的乱淫视频a 毛片国产 | 久久www视频 | av手机在线电影 | 亚洲男人的天堂在线视频 | 成人免费观看毛片 | 午夜视频在线观看91 | 91精品久久香蕉国产线看观看 | 国产99久久精品一区二区 | 在线播放亚洲 | 成人福利在线免费观看 | 毛片在线播放视频 | 黄色网址进入 | 久久国产精品久久久久久电车 |