|
|
@@ -72,6 +72,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
sync: [
|
|
|
{ action: "removeUIElements" },
|
|
|
{ action: "replaceStyleContents" },
|
|
|
+ { option: "removeSrcSet", action: "removeSrcSet" },
|
|
|
{ option: "removeFrames", action: "removeFrames" },
|
|
|
{ option: "removeImports", action: "removeImports" },
|
|
|
{ option: "removeScripts", action: "removeScripts" },
|
|
|
@@ -106,7 +107,6 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}, {
|
|
|
sync: [
|
|
|
{ option: "lazyLoadImages", action: "lazyLoadImages" },
|
|
|
- { option: "removeSrcSet", action: "removeSrcSet" },
|
|
|
{ option: "removeAlternativeFonts", action: "postRemoveAlternativeFonts" }
|
|
|
],
|
|
|
async: [
|
|
|
@@ -130,6 +130,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
const docData = DOM.preProcessDoc(this.options.doc, this.options.win, this.options);
|
|
|
this.options.canvasData = docData.canvasData;
|
|
|
this.options.stylesheetContents = docData.stylesheetContents;
|
|
|
+ this.options.currentSrcImages = docData.currentSrcImages;
|
|
|
}
|
|
|
this.options.content = this.options.content || (this.options.doc ? DOM.serialize(this.options.doc, false) : null);
|
|
|
this.onprogress = options.onprogress || (() => { });
|
|
|
@@ -398,20 +399,27 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}
|
|
|
|
|
|
removeSrcSet() {
|
|
|
- this.doc.querySelectorAll("[srcset]").forEach(element => {
|
|
|
+ this.doc.querySelectorAll("[srcset], [data-srcset]").forEach((element, elementIndex) => {
|
|
|
const tagName = element.tagName.toLowerCase();
|
|
|
+ const currentSrcImage = this.options.currentSrcImages && this.options.currentSrcImages[elementIndex];
|
|
|
if (tagName == "source") {
|
|
|
const parentElement = element.parentElement;
|
|
|
if (parentElement.tagName.toLowerCase() == "picture") {
|
|
|
const imageElement = parentElement.querySelector("img");
|
|
|
- if (imageElement && imageElement.src) {
|
|
|
+ if (imageElement && (imageElement.src || currentSrcImage)) {
|
|
|
element.remove();
|
|
|
+ if (currentSrcImage) {
|
|
|
+ imageElement.src = currentSrcImage;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (tagName == "img" && element.src) {
|
|
|
+ if (tagName == "img" && (element.src || currentSrcImage)) {
|
|
|
element.removeAttribute("srcset");
|
|
|
element.removeAttribute("sizes");
|
|
|
+ if (currentSrcImage) {
|
|
|
+ element.src = currentSrcImage;
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -574,6 +582,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
options.content = frameData.content;
|
|
|
options.canvasData = frameData.canvasData;
|
|
|
options.stylesheetContents = frameData.stylesheetContents;
|
|
|
+ options.currentSrcImages = frameData.currentSrcImages;
|
|
|
frameData.processor = new PageProcessor(options);
|
|
|
frameData.frameElement = frameElement;
|
|
|
await frameData.processor.loadPage();
|