浏览代码

make sure observeIntersection and unobserveIntersection are defined

Former-commit-id: acbb67c67e6998260559c1b1145e768f29b361ef
Gildas 6 年之前
父节点
当前提交
ec5e2b1498
共有 1 个文件被更改,包括 31 次插入29 次删除
  1. 31 29
      lib/hooks/content/content-hooks-frames-web.js

+ 31 - 29
lib/hooks/content/content-hooks-frames-web.js

@@ -273,39 +273,41 @@
 		const observeIntersection = IntersectionObserver.prototype.observe;
 		const unobserveIntersection = IntersectionObserver.prototype.unobserve;
 		let warningIntersectionObserverDisplayed;
-		window.IntersectionObserver = function () {
-			if (!warningIntersectionObserverDisplayed) {
-				console.warn("SingleFile is hooking the IntersectionObserver API to detect and load deferred images."); // eslint-disable-line no-console
-				warningIntersectionObserverDisplayed = true;
-			}
-			const intersectionObserver = new IntersectionObserver(...arguments);
-			const callback = arguments[0];
-			const options = arguments[1];
-			intersectionObserver.observe = function (targetElement) {
-				let targetElements = observedElements.get(intersectionObserver);
-				if (!targetElements) {
-					targetElements = [];
-					observedElements.set(intersectionObserver, targetElements);
+		if (observeIntersection && unobserveIntersection) {
+			window.IntersectionObserver = function () {
+				if (!warningIntersectionObserverDisplayed) {
+					console.warn("SingleFile is hooking the IntersectionObserver API to detect and load deferred images."); // eslint-disable-line no-console
+					warningIntersectionObserverDisplayed = true;
 				}
-				targetElements.push(targetElement);
-				return observeIntersection.call(intersectionObserver, targetElement);
-			};
-			intersectionObserver.unobserve = function (targetElement) {
-				let targetElements = observedElements.get(intersectionObserver);
-				if (targetElements) {
-					targetElements = targetElements.filter(element => element <= targetElement);
-					if (targetElements.length) {
+				const intersectionObserver = new IntersectionObserver(...arguments);
+				const callback = arguments[0];
+				const options = arguments[1];
+				intersectionObserver.observe = function (targetElement) {
+					let targetElements = observedElements.get(intersectionObserver);
+					if (!targetElements) {
+						targetElements = [];
 						observedElements.set(intersectionObserver, targetElements);
-					} else {
-						observedElements.delete(intersectionObserver);
 					}
-				}
-				return unobserveIntersection.call(intersectionObserver, targetElement);
+					targetElements.push(targetElement);
+					return observeIntersection.call(intersectionObserver, targetElement);
+				};
+				intersectionObserver.unobserve = function (targetElement) {
+					let targetElements = observedElements.get(intersectionObserver);
+					if (targetElements) {
+						targetElements = targetElements.filter(element => element <= targetElement);
+						if (targetElements.length) {
+							observedElements.set(intersectionObserver, targetElements);
+						} else {
+							observedElements.delete(intersectionObserver);
+						}
+					}
+					return unobserveIntersection.call(intersectionObserver, targetElement);
+				};
+				observers.set(intersectionObserver, { callback, options });
+				return intersectionObserver;
 			};
-			observers.set(intersectionObserver, { callback, options });
-			return intersectionObserver;
-		};
-		window.IntersectionObserver.toString = function () { return "function IntersectionObserver() { [native code]"; };
+			window.IntersectionObserver.toString = function () { return "function IntersectionObserver() { [native code]"; };
+		}
 	}
 
 })();