异步图片资源

//<img xxxxsrc="XXXX.jpg">

 

(function(e) {
    Snda = e.Snda = e.Snda || {};
    Snda.extend = function(a, b, c) {
        for (prop in b) {
            if (c == false && a[prop] != null) continue;
            a[prop] = b[prop]
        };
        return a
    };
    Snda.Utility = Snda.Utility || {};
    Snda.Utility.Event = Snda.Utility.Event || {};
    Snda.Utility.Postion = Snda.Utility.Postion || {};
    Snda.extend(Snda.Utility.Event, {
        addEventHandler: function(a, b, c, d) {
            if (a.addEventListener) a.addEventListener(b, c, d);
            else if (a.attachEvent) a.attachEvent("on" + b, c);
            else a["on" + b] = c
        },
        removeEventHandler: function(a, b, c, d) {
            if (a.removeEventListener) a.removeEventListener(b, c, d);
            else if (a.detachEvent) a.detachEvent('on' + b, c);
            else a['on' + b] = null
        }
    },
    true);
    Snda.extend(Snda.Utility.Postion, {
        getY: function(a) {
            var b = 0;
            if (a && a.offsetParent) {
                while (a.offsetParent) {
                    b += a.offsetTop;
                    a = a.offsetParent
                }
            } else if (a && a.y) b += a.y;
            return b
        },
        scrollX: function() {
            var a = document.documentElement;
            return self.pageXOffset || (a && a.scrollLeft) || document.body.scrollLeft || 0
        },
        scrollY: function() {
            var a = document.documentElement;
            return self.pageYOffset || (a && a.scrollTop) || document.body.scrollTop || 0
        },
        windowWidth: function() {
            var a = document.documentElement;
            return self.innerWidth || (a && a.clientWidth) || document.body.clientWidth
        },
        windowHeight: function() {
            var a = document.documentElement;
            return self.innerHeight || (a && a.clientHeight) || document.body.clientHeight
        }
    },
    true);
    var f = {
        range: 50,
        elements: ['img', 'iframe'],
        containers: [document]
    };
    var g = [],
    DATA_SRC = "lazyload-src",
    _timer,
    Utility = Snda.Utility;
    var h = function() {
        if (_timer) return;
        _timer = setTimeout(function() {
            l();
            if (g.length === 0) {
                Utility.Event.removeEventHandler(window, "scroll", h);
                Utility.Event.removeEventHandler(window, "resize", h)
            };
            _timer = null
        },
        100)
    };
    var l = function() {
        var i, _top = f.range + Utility.Postion.scrollY() + Utility.Postion.windowHeight(),
        _elm,
        _data_src,
        _remain = [];
        for (i = 0, _elm; _elm = g[i++];) {
            if (Utility.Postion.getY(_elm) <= _top) {
                _data_src = _elm.getAttribute(DATA_SRC);
                if (_data_src && _elm.src != _data_src) {
                    _elm.src = _data_src;
                    _elm.removeAttribute(DATA_SRC)
                }
            } else _remain.push(_elm)
        }
        g = _remain
    };
    var m = {
        init: function(a) {
            if (! (this instanceof arguments.callee)) return new arguments.callee(a);
            if (a) {
                if (typeof a.range !== "undefined") f.range = a.range;
                if (typeof a.elements !== "undefined") f.elements = a.elements;
                if (typeof a.containers !== "undefined") f.containers = a.containers
            };
            Utility.Event.addEventHandler(window, "scroll", l);
            Utility.Event.addEventHandler(window, "resize", l);
            h()
        }
    };
    var n = function() {
        var i, il, j, jl, k, kl, _arr, _elm, _data_src;
        for (i = 0, il = f.containers.length; i < il; i += 1) {
            for (j = 0, jl = f.elements.length; j < jl; j += 1) {
                _arr = f.containers[i].getElementsByTagName(f.elements[j]);
                for (k = 0, kl = _arr.length; k < kl; k += 1) {
                    _data_src = _arr[k].getAttribute(DATA_SRC);
                    if (_data_src && _arr[k].src != _data_src) {
                        g.push(_arr[k])
                    }
                }
            }
        }
    } ();
    Snda.LazyLoad = m
})(window);
Snda.LazyLoad.init();

posted on 2011-09-09 16:57  西湖浪子  阅读(206)  评论(0)    收藏  举报