Просмотр исходного кода

fixed lazy loading issues on Medium

Former-commit-id: 189c629ee130fd9449c5ab75ec84150c7a3b14e1
Gildas 6 лет назад
Родитель
Сommit
445e0289e0
1 измененных файлов с 6 добавлено и 3 удалено
  1. 6 3
      lib/hooks/content/content-hooks-frames-web.js

+ 6 - 3
lib/hooks/content/content-hooks-frames-web.js

@@ -101,6 +101,9 @@
 						dispatchEvent(new CustomEvent(IMAGE_LOADED_EVENT, { detail: image.src }));
 						result.dispatchEvent(new UIEvent(event.type, event));
 					};
+					if (image.decode) {
+						result.decode = () => image.decode();
+					}
 					return result;
 				};
 			});
@@ -289,6 +292,7 @@
 				const intersectionObserver = new IntersectionObserver(...arguments);
 				const callback = arguments[0];
 				const options = arguments[1];
+				intersectionObserver.id = observers.size;
 				intersectionObserver.observe = function (targetElement) {
 					let targetElements = observedElements.get(intersectionObserver);
 					if (!targetElements) {
@@ -302,10 +306,9 @@
 					let targetElements = observedElements.get(intersectionObserver);
 					if (targetElements) {
 						targetElements = targetElements.filter(element => element != targetElement);
-						if (targetElements.length) {
-							observedElements.set(intersectionObserver, targetElements);
-						} else {
+						if (!targetElements.length) {
 							observedElements.delete(intersectionObserver);
+							observers.delete(intersectionObserver);
 						}
 					}
 					return unobserveIntersection.call(intersectionObserver, targetElement);