Gildas 7 лет назад
Родитель
Сommit
25edcc8064
1 измененных файлов с 12 добавлено и 15 удалено
  1. 12 15
      lib/single-file/single-file-core.js

+ 12 - 15
lib/single-file/single-file-core.js

@@ -281,20 +281,8 @@ const SingleFileCore = (() => {
 		}
 
 		lazyLoadImages() {
-			this.doc.querySelectorAll("img[data-src]").forEach(imgElement => {
-				const dataSrc = imgElement.dataset.src;
-				if (dataSrc && dataSrc.startsWith(DATA_URI_PREFIX) && dataSrc != EMPTY_DATA_URI && imgElement.src != dataSrc) {
-					imgElement.src = imgElement.dataset.src;
-					imgElement.removeAttribute("data-src");
-				}
-			});
-			this.doc.querySelectorAll("img[data-original]").forEach(imgElement => {
-				const dataOriginal = imgElement.dataset.original;
-				if (dataOriginal && dataOriginal.startsWith(DATA_URI_PREFIX) && dataOriginal != EMPTY_DATA_URI && imgElement.src != dataOriginal) {
-					imgElement.src = imgElement.dataset.original;
-					imgElement.removeAttribute("data-original");
-				}
-			});
+			DomProcessorHelper.replaceSrc(this.doc.querySelectorAll("img[data-src]"), "src");
+			DomProcessorHelper.replaceSrc(this.doc.querySelectorAll("img[data-original]"), "original");
 			this.doc.querySelectorAll("[data-bg]").forEach(element => {
 				const dataBg = element.dataset.bg;
 				if (dataBg && dataBg.startsWith(DATA_URI_PREFIX) && dataBg != EMPTY_DATA_URI && !element.style.backgroundImage.includes(dataBg)) {
@@ -306,7 +294,6 @@ const SingleFileCore = (() => {
 				if (imgElement.dataset.srcset && imgElement.srcset != imgElement.dataset.srcset) {
 					imgElement.srcset = imgElement.dataset.srcset;
 					imgElement.removeAttribute("data-srcset");
-					imgElement.classList.remove("no-src");
 				}
 			});
 		}
@@ -714,6 +701,16 @@ const SingleFileCore = (() => {
 			}));
 		}
 
+		static replaceSrc(elements, attributeName) {
+			elements.forEach(element => {
+				const dataSrc = element.dataset[attributeName];
+				if (dataSrc && dataSrc.startsWith(DATA_URI_PREFIX) && dataSrc != EMPTY_DATA_URI && element.src != dataSrc) {
+					element.src = element.dataset[attributeName];
+					element.removeAttribute("data-" + attributeName);
+				}
+			});
+		}
+
 		static async processSrcset(resourceElements, attributeName, baseURI, parseSrcset) {
 			await Promise.all(Array.from(resourceElements).map(async resourceElement => {
 				const srcset = parseSrcset(resourceElement.getAttribute(attributeName));