异步图片资源
//<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();