페이지의 게으름 피우기 로드

5129 단어
        'lazyQueue': {},
        'isVisiable': function(elem) {
            if (!elem) return false;
            // console.log(($(window).scrollTop()+"::"+($(elem).offset().top+$(elem).outerHeight()))+"::"+(($(window).scrollTop()+$(window).height())+"::"+$(elem).offset().top))
            return ($(window).scrollTop() <= ($(elem).offset().top + $(elem).outerHeight())) && (($(window).scrollTop() + $(window).height()) > $(elem).offset().top);
        },
        'lazyload': function(elem, htmlcode, item, cb) {
            elem.html(htmlcode.html);
            elem.css('display', 'block');
            if (elem && elem.length != 0) {
                var top = elem.offset().top;

                if (this.isVisiable(elem)) {
                    this.showImg(elem);
                    cb && cb.apply(this, arguments);
                    return;
                }
                if (this.lazyQueue[top]) {
                    this.lazyQueue[top].push({
                        'elem': elem,
                        'html': htmlcode,
                        'item': item,
                        'loaded': false,
                        'callback': cb
                    });
                } else {
                    this.lazyQueue[top] = [{
                        'elem': elem,
                        'loaded': false,
                        'callback': cb
                    }];
                }
            }

        },
        'showImg': function(elem) {
            var imgs = elem.find('img');
            for (var i = 0; i < imgs.length; i++) {
                $(imgs[i]).attr('src', $(imgs[i]).attr('data-src')).fadeIn(500);
            }
        },
 $(window).bind("scroll", function() {
        var Ad = LETV.using('Plugin').AD;
        if (Ad.lazySt)
            clearTimeout(Ad.lazySt);
        Ad.lazySt = setTimeout(function() {
            var curHeight = $(window).height() + $(window).scrollTop(),
                lazyQueue = Ad.lazyQueue;
            for (var key in lazyQueue) {
                if (lazyQueue.hasOwnProperty(key)) {
                    var item = lazyQueue[key];
                    if (!item) continue;
                    for (var j = 0; j < item.length; j++) {
                        var mItem = item[j];
                        if (mItem && !mItem.loaded && Ad.isVisiable(mItem.elem)) {
                            if (mItem.loaded === false) {
                                mItem.cb && typeof mItem.cb == 'function' && mItem.cb();
                                Ad.showImg(mItem.elem);
                                mItem.loaded = true;
                            } else {
                                mItem = null;
                            }
                        }
                    }
                }
            }

        }, 200);
    });

  
다음으로 전송:https://www.cnblogs.com/coding4/p/5864490.html

좋은 웹페이지 즐겨찾기