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