Procházet zdrojové kódy

catch exceptions when dispacthing fake events (fix #525)

Gildas před 5 roky
rodič
revize
e0a4d71db6

+ 12 - 6
lib/single-file/processors/hooks/content/content-hooks-frames-web.js

@@ -150,8 +150,7 @@
 			document.documentElement.style.setProperty("transform-origin", (zoomFactorX < 1 ? "50%" : "0") + " " + (zoomFactorY < 1 ? "50%" : "0") + " 0", "important");
 			document.documentElement.style.setProperty("transform", "scale3d(" + zoomFactor + ", " + zoomFactor + ", 1)", "important");
 			document.documentElement.style.setProperty("min-height", (100 / zoomFactor) + "vh", "important");
-			dispatchEvent(new UIEvent("resize"));
-			dispatchEvent(new Event("scroll"));
+			dispatchResizeEvent();
 			if (keepZoomLevel) {
 				document.documentElement.style.setProperty("-sf-transform", transform, transformPriority);
 				document.documentElement.style.setProperty("-sf-transform-origin", transformOrigin, transformOriginPriority);
@@ -163,8 +162,7 @@
 			}
 		}
 		if (!keepZoomLevel) {
-			dispatchEvent(new UIEvent("resize"));
-			dispatchEvent(new Event("scroll"));
+			dispatchResizeEvent();
 			const docBoundingRect = scrollingElement.getBoundingClientRect();
 			[...observers].forEach(([intersectionObserver, observer]) => {
 				const rootBoundingRect = observer.options && observer.options.root && observer.options.root.getBoundingClientRect();
@@ -226,8 +224,7 @@
 			delete window._singleFileImage;
 		}
 		if (!keepZoomLevel) {
-			dispatchEvent(new UIEvent("resize"));
-			dispatchEvent(new Event("scroll"));
+			dispatchResizeEvent();
 		}
 	}
 
@@ -347,4 +344,13 @@
 		window.IntersectionObserver.toString = function () { return "function IntersectionObserver() { [native code] }"; };
 	}
 
+	function dispatchResizeEvent() {
+		try {
+			dispatchEvent(new UIEvent("resize"));
+			dispatchEvent(new Event("scroll"));
+		} catch (error) {
+			// ignored
+		}
+	}
+
 })();