Skip to content

Commit db57dcd

Browse files
authored
Update quikr.js
1 parent 74d7bed commit db57dcd

File tree

1 file changed

+43
-5
lines changed

1 file changed

+43
-5
lines changed

quikr.js

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(function (root) {
1+
!(function (root) {
22

33
var tmpl_cache = {};
44
var resp_cache = {};
@@ -107,6 +107,7 @@
107107
}
108108
elem.setAttribute('qkr', "");
109109
$(elem).removeAttr("qkr-attr").find("[qkr-attr]").removeAttr("qkr-attr");
110+
110111
};
111112

112113
if (apis.length > 0) {
@@ -125,8 +126,8 @@
125126
}
126127
};
127128

128-
$(document).ready(function () {
129-
$('[qkr="tmpl"]').each(function (i, elem) {
129+
quikr.init = function(){
130+
$('[qkr="tmpl"]').each(function (i, elem) {
130131
quikr.applyTmpl(elem);
131132
});
132133
$("body").on("click", '[qkr="action"]', function (e) {
@@ -154,12 +155,49 @@
154155
} else {
155156
callback(data);
156157
}
157-
158158
});
159-
});
159+
};
160+
160161
quikr.action("qkr-reload", function (data) {
161162
var tmpl = this.getAttribute("qkr-tmpl");
162163
quikr.applyTmpl(document.getElementById(tmpl));
163164
});
165+
166+
function loadImage (el, fn) {
167+
var img = new Image()
168+
, src = el.getAttribute('data-src');
169+
img.onload = function() {
170+
if (!! el.parent)
171+
el.parent.replaceChild(img, el)
172+
else
173+
el.src = src;
174+
175+
fn? fn() : null;
176+
}
177+
img.src = src;
178+
}
179+
180+
function elementInViewport(el) {
181+
var rect = el.getBoundingClientRect()
182+
183+
return (
184+
rect.top >= 0
185+
&& rect.left >= 0
186+
&& rect.top <= (window.innerHeight || document.documentElement.clientHeight)
187+
)
188+
}
189+
190+
var loadLazyImages = function(){
191+
images = $('img[data-src]')
192+
for (var i = 0; i < images.length; i++) {
193+
if (elementInViewport(images[i])) {
194+
loadImage(images[i], function () {
195+
//images.splice(i, i);
196+
});
197+
}
198+
};
199+
};
200+
quikr.loadLazyImages = loadLazyImages;
201+
164202
root.quikr = quikr;
165203
})(this);

0 commit comments

Comments
 (0)