Explorar el Código

unzooom/zoom the page to force the loading of deferred images

Gildas hace 7 años
padre
commit
c7251f0334
Se han modificado 1 ficheros con 18 adiciones y 2 borrados
  1. 18 2
      lib/hooks/hooks-frame.js

+ 18 - 2
lib/hooks/hooks-frame.js

@@ -130,8 +130,24 @@ this.hooksFrame = this.hooksFrame || (() => {
 					};
 				});
 			}
-			dispatchEvent(new UIEvent("resize"));
-			dispatchEvent(new UIEvent("scroll"));
+			const zoomFactor = Math.min(clientHeight / scrollHeight, clientWidth / scrollWidth);
+			if (zoomFactor < 1) {
+				const transform = document.documentElement.style.getPropertyValue("transform");
+				const transformPriority = document.documentElement.style.getPropertyPriority("transform");
+				const transformOrigin = document.documentElement.style.getPropertyValue("transform-origin");
+				const transformOriginPriority = document.documentElement.style.getPropertyPriority("transform-origin");
+				document.documentElement.style.transform = "scale3d(" + zoomFactor + ", " + zoomFactor + ", 1)";
+				document.documentElement.style.transformOrigin = "50% 0";
+				document.documentElement.style.setProperty("transform", "scale3d(" + zoomFactor + ", " + zoomFactor + ", 1)", "important");
+				document.documentElement.style.setProperty("transform-origin", "50% 0", "important");
+				dispatchEvent(new UIEvent("resize"));
+				dispatchEvent(new UIEvent("scroll"));
+				document.documentElement.style.setProperty("transform", transform, transformPriority);
+				document.documentElement.style.setProperty("transform-origin", transformOrigin, transformOriginPriority);
+			} else {
+				dispatchEvent(new UIEvent("resize"));
+				dispatchEvent(new UIEvent("scroll"));
+			}
 			const docBoundingRect = document.documentElement.getBoundingClientRect();
 			Array.from(observers).forEach(([intersectionObserver, observer]) => {
 				const rootBoundingRect = observer.options.root && observer.options.root.getBoundingClientRect();