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

create the DOM mutation observer before inserting the script

Gildas 7 лет назад
Родитель
Сommit
ab88d08e01
1 измененных файлов с 6 добавлено и 9 удалено
  1. 6 9
      lib/lazy/content-lazy-loader.js

+ 6 - 9
lib/lazy/content-lazy-loader.js

@@ -29,19 +29,17 @@ this.lazyLoader = this.lazyLoader || (() => {
 	return { process };
 
 	async function process() {
-		const scriptURL = browser.runtime.getURL("lib/lazy/web-lazy-loader-before.js");
-		const scriptBeforeElement = document.createElement("script");
-		scriptBeforeElement.src = scriptURL;
-		document.body.appendChild(scriptBeforeElement);
-		let timeoutId, maxTimeoutId, idleTimeoutId;
-		const promise = new Promise(resolve => {
-			let srcAttributeChanged;
-			scriptBeforeElement.onload = () => scriptBeforeElement.remove();
+		return new Promise(resolve => {
+			let timeoutId, maxTimeoutId, idleTimeoutId, srcAttributeChanged;
 			const observer = new MutationObserver(() => {
 				srcAttributeChanged = true;
 				timeoutId = deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, resolve);
 			});
 			observer.observe(document, { attributeFilter: ["src", "srcset"], subtree: true });
+			const scriptBeforeElement = document.createElement("script");
+			scriptBeforeElement.src = browser.runtime.getURL("lib/lazy/web-lazy-loader-before.js");
+			document.body.appendChild(scriptBeforeElement);
+			scriptBeforeElement.onload = () => scriptBeforeElement.remove();
 			idleTimeoutId = timeout.set(() => {
 				if (!srcAttributeChanged) {
 					timeout.clear(timeoutId);
@@ -53,7 +51,6 @@ this.lazyLoader = this.lazyLoader || (() => {
 				lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, resolve);
 			}, MAX_LAZY_LOADING_TIMEOUT);
 		});
-		return promise;
 	}
 
 	function deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, resolve) {