|
|
@@ -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) {
|