فهرست منبع

added handling of data-lazy-src and data-lazy-srcset attributes

Gildas 7 سال پیش
والد
کامیت
be31288705
1فایلهای تغییر یافته به همراه16 افزوده شده و 5 حذف شده
  1. 16 5
      lib/single-file/lazy-loader.js

+ 16 - 5
lib/single-file/lazy-loader.js

@@ -26,6 +26,7 @@ this.lazyLoader = this.lazyLoader || (() => {
 	return {
 		process(doc) {
 			replaceSrc(doc.querySelectorAll("img[data-src]"), "src");
+			replaceSrc(doc.querySelectorAll("img[data-lazy-src]"), "lazy-src", "lazySrc");
 			replaceSrc(doc.querySelectorAll("img[data-original]"), "original");
 			doc.querySelectorAll("[data-bg]").forEach(element => {
 				const dataBg = element.dataset.bg;
@@ -43,6 +44,14 @@ this.lazyLoader = this.lazyLoader || (() => {
 					processElement(imgElement);
 				}
 			});
+			doc.querySelectorAll("[data-lazy-srcset]").forEach(imgElement => {
+				const srcset = imgElement.dataset.lazySrcset;
+				if (srcset && imgElement.srcset != srcset) {
+					imgElement.srcset = srcset;
+					imgElement.removeAttribute("data-lazy-srcset");
+					processElement(imgElement);
+				}
+			});
 			doc.querySelectorAll(".lazyload").forEach(element => {
 				element.classList.add("lazypreload");
 				element.classList.remove("lazyload");
@@ -52,19 +61,21 @@ this.lazyLoader = this.lazyLoader || (() => {
 			src: {
 				"img[data-src]": "data-src",
 				"img[data-original]": "data-original",
-				"img[data-bg]": "data-bg"
+				"img[data-bg]": "data-bg",
+				"img[data-lazy-src]": "data-lazy-src"
 			},
 			srcset: {
-				"[data-srcset]": "data-srcset"
+				"[data-srcset]": "data-srcset",
+				"[data-lazy-srcset]": "data-lazy-srcset"
 			}
 		}
 	};
 
-	function replaceSrc(elements, attributeName) {
+	function replaceSrc(elements, attributeName, propertyName) {
 		elements.forEach(element => {
-			const dataSrc = element.dataset[attributeName];
+			const dataSrc = element.dataset[propertyName || attributeName];
 			if (dataSrc && dataSrc.startsWith(DATA_URI_PREFIX) && dataSrc != EMPTY_DATA_URI && element.src != dataSrc) {
-				element.src = element.dataset[attributeName];
+				element.src = element.dataset[propertyName || attributeName];
 				element.removeAttribute("data-" + attributeName);
 				processElement(element);
 			}