Skip to content

Commit eb4e1b9

Browse files
committed
Optimize loading. Add 'ignoreThreshold' option.
1 parent dd4e507 commit eb4e1b9

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "responsively-lazy",
33
"title": "Responsively Lazy",
4-
"version": "3.0.1",
4+
"version": "3.2.0",
55
"description": "Lazy load responsive images and HTML",
66
"homepage": "https://ivopetkov.com/responsively-lazy/",
77
"author": {

responsively-lazy.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
9494
return;
9595
}
9696
processLoadImageQueueLock = true;
97-
var maxSimultaneousImages = 5;
97+
var maxConcurrentImages = 3;
9898
loadImageQueue = loadImageQueue.filter(function (item) { return item[2] !== 2 }); // Remove completed
9999
for (var i = 0; i < loadImageQueue.length; i++) { // Update visibility priority
100100
loadImageQueue[i][4] = getVisibilityPriority(loadImageQueue[i][1]);
@@ -104,7 +104,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
104104
});
105105
var currentlyLoadingCount = loadImageQueue.filter(function (item) { return item[3] === 1 }).length;
106106
for (var i = 0; i < loadImageQueue.length; i++) {
107-
if (currentlyLoadingCount >= maxSimultaneousImages) {
107+
if (currentlyLoadingCount >= maxConcurrentImages) {
108108
break;
109109
}
110110
var item = loadImageQueue[i];
@@ -209,7 +209,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
209209
options = temp;
210210
}
211211
}
212-
var elementWidth = element.offsetWidth * (typeof window.devicePixelRatio !== 'undefined' ? window.devicePixelRatio : 1);
212+
var elementWidth = element.getBoundingClientRect().width * (typeof window.devicePixelRatio !== 'undefined' ? window.devicePixelRatio : 1);
213213

214214
var bestSelectedOption = null;
215215
for (var j = 0; j < options.length; j++) {
@@ -273,13 +273,15 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
273273
windowHeight = window.innerHeight;
274274
};
275275

276-
var updateElement = function (element) {
276+
var updateElement = function (element, options) {
277277

278278
if (typeof element.responsivelyLazyDone !== 'undefined') {
279279
return;
280280
}
281281

282-
if (getVisibilityPriority(element) === 0) {
282+
var ignoreThreshold = typeof options.ignoreThreshold !== 'undefined' ? options.ignoreThreshold : false;
283+
284+
if (!ignoreThreshold && getVisibilityPriority(element) === 0) {
283285
return;
284286
}
285287

@@ -307,24 +309,29 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
307309

308310
};
309311

310-
var run = function (element) {
312+
var run = function (element, options) {
311313
if (hasWebPSupport === null) {
312314
return;
313315
}
314316
if (hasAVIFSupport === null) {
315317
return;
316318
}
319+
if (typeof options === 'undefined') {
320+
options = {};
321+
}
317322
if (debug) {
318323
var timerLabel = 'responsivelyLazy::run';
319324
console.time(timerLabel);
320325
}
321-
if (typeof element !== 'undefined') {
322-
updateElement(elements[i]);
326+
if (typeof element !== 'undefined' && element !== null) {
327+
if (element.getAttribute('data-responsively-lazy') !== null) {
328+
updateElement(element, options);
329+
}
323330
} else {
324331
var elements = document.querySelectorAll('[data-responsively-lazy]');
325332
for (var i = 0; i < elements.length; i++) {
326333
var element = elements[i];
327-
updateElement(elements[i]);
334+
updateElement(elements[i], options);
328335
}
329336
}
330337
if (debug) {
@@ -377,7 +384,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
377384
for (var i in entries) {
378385
var entry = entries[i];
379386
if (entry.intersectionRatio > 0) {
380-
updateElement(entry.target);
387+
updateElement(entry.target, {});
381388
}
382389
}
383390
});

0 commit comments

Comments
 (0)