lazyload.min.js 2.3 KB

1
  1. define(function(e,t,i){"use strict";var o=e("../util"),r=e("../base"),l=function(e){l.superclass.constructor.call(this,e),this.userConfig=o.mix({imgsSelector:"img",delay:200,imgSetter:function(e){var t=e.getAttribute("data-src");t&&e.setAttribute("src",t)}},e)};if(o.extend(l,r,{pluginId:"lazyload",pluginInitializer:function(e){var t=this;return t.xscroll=e,t.reset(),t._bindEvt(),t},pluginDestructor:function(){var e=this;e.xscroll&&e.xscroll.off("scroll scrollend afterrender",e._filterItem,e),e._isEvtBinded=!1},_filterItem:function(){var e=this;e.xscroll.getPlugin("infinite")?e._filterItemByInfinite.call(e):e._filterItemByNormal.call(e)},_filterItemByNormal:function(){for(var e,t=this,i=t.xscroll.getScrollPos(),o="x"==t.zoomType?i.scrollLeft:i.scrollTop,r="x"==t.zoomType?"offsetWidth":"offsetHeight",l="x"==t.zoomType?"left":"top",s="x"==t.zoomType?"right":"bottom",n=0,f=t.positions.length;n<f;n++)e=t.positions[n],(e[l]>=o&&e[l]<=o+t.xscroll.renderTo[r]||e[s]>=o&&e[s]<=o+t.xscroll.renderTo[r])&&t.userConfig.imgSetter.call(t,t.imgs[n])},_filterItemByInfinite:function(){var e=this,t=e.xscroll.getPlugin("infinite");clearTimeout(e._timeout),e._timeout=setTimeout(function(){if(!e.xscroll["isScrolling"+e.zoomType.toUpperCase()]){for(var i=0;i<t.infiniteLength;i++)if(t.infiniteElementsCache[i]._visible&&t.infiniteElements[i])for(var o=t.infiniteElements[i].querySelectorAll(e.userConfig.imgsSelector),r=0,l=o.length;r<l;r++)e.userConfig.imgSetter.call(e,o[r]);e._filterItemByNormal()}},e.userConfig.delay)},reset:function(){var e,t,i=this;i.zoomType=i.xscroll.userConfig.zoomType,i.imgs=i.xscroll.renderTo.querySelectorAll(i.userConfig.imgsSelector);var r=(i.xscroll.getScrollPos(),"x"==i.zoomType?"left":"top"),l="x"==i.zoomType?"right":"bottom",s="x"==i.zoomType?o.getOffsetLeft:o.getOffsetTop,n="x"==i.zoomType?"offsetWidth":"offsetHeight",f="x"==i.zoomType?"width":"height";i.positions=[];for(var c=0,m=i.imgs.length;c<m;c++)e=i.imgs[c],t={},t[r]=s(e),t[f]=e[n],t[l]=t[r]+t[f],i.positions.push(t);return i},_bindEvt:function(){var e=this;if(!e._isEvtBinded){e._isEvtBinded=!0;var t=e.xscroll.userConfig.useOriginScroll?"scroll":"scrollend";e.xscroll.on("afterrender",e._filterItem,e),e.xscroll.on(t,e._filterItem,e)}}}),"object"==typeof i&&i.exports)i.exports=l;else if(window.XScroll&&window.XScroll.Plugins)return XScroll.Plugins.LazyLoad=l});