|
|
@@ -283,10 +283,10 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
const [resourceURL, asDataURI] = JSON.parse(requestKey);
|
|
|
const resourceRequests = this.requests.get(requestKey);
|
|
|
try {
|
|
|
- const resourceContent = await Download.getContent(resourceURL, { asDataURI, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
+ const content = await Download.getContent(resourceURL, { asDataURI, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
indexResource = indexResource + 1;
|
|
|
onloadListener({ index: indexResource, url: resourceURL });
|
|
|
- resourceRequests.forEach(resourceRequest => resourceRequest.resolve({ content: resourceContent, indexResource, duplicate: Boolean(resourceRequests.length > 1) }));
|
|
|
+ resourceRequests.forEach(resourceRequest => resourceRequest.resolve({ content: content.data, indexResource, duplicate: Boolean(resourceRequests.length > 1) }));
|
|
|
} catch (error) {
|
|
|
indexResource = indexResource + 1;
|
|
|
onloadListener({ index: indexResource, url: resourceURL });
|
|
|
@@ -325,8 +325,11 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}
|
|
|
|
|
|
async loadPage(pageContent) {
|
|
|
+ let resourceURL;
|
|
|
if (!pageContent || this.options.saveRawPage) {
|
|
|
- pageContent = await Download.getContent(this.baseURI, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
|
|
|
+ const content = await Download.getContent(this.baseURI, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
|
|
|
+ pageContent = content.data;
|
|
|
+ this.baseURI = this.options.url = resourceURL;
|
|
|
}
|
|
|
this.doc = DOM.createDoc(pageContent, this.baseURI);
|
|
|
this.onEventAttributeNames = DOM.getOnEventAttributeNames(this.doc);
|
|
|
@@ -866,8 +869,8 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
await Promise.all(Array.from(this.doc.querySelectorAll("script[src]")).map(async scriptElement => {
|
|
|
if (scriptElement.src) {
|
|
|
this.stats.add("processed", "scripts", 1);
|
|
|
- const scriptContent = await Download.getContent(scriptElement.src, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
|
|
|
- scriptElement.textContent = scriptContent.replace(/<\//gi, "<\\/").replace(/\/>/gi, "\\/>");
|
|
|
+ const content = await Download.getContent(scriptElement.src, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
|
|
|
+ scriptElement.textContent = content.data.replace(/<\//gi, "<\\/").replace(/\/>/gi, "\\/>");
|
|
|
}
|
|
|
scriptElement.removeAttribute("src");
|
|
|
}));
|
|
|
@@ -1171,8 +1174,9 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}
|
|
|
if (DomUtil.testValidURL(resourceURL, baseURI, options.url)) {
|
|
|
const downloadOptions = { asDataURI: false, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled, validateTextContentType: true };
|
|
|
- let importedStylesheetContent = await Download.getContent(resourceURL, downloadOptions);
|
|
|
- importedStylesheetContent = DomUtil.removeCssComments(importedStylesheetContent);
|
|
|
+ const content = await Download.getContent(resourceURL, downloadOptions);
|
|
|
+ resourceURL = content.resourceURL;
|
|
|
+ let importedStylesheetContent = DomUtil.removeCssComments(content.data);
|
|
|
if (options.compressCSS) {
|
|
|
importedStylesheetContent = DOM.compressCSS(importedStylesheetContent);
|
|
|
}
|
|
|
@@ -1229,8 +1233,9 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
resourceURL = DomUtil.normalizeURL(resourceURL);
|
|
|
if (resourceURL && resourceURL != baseURI && resourceURL != ABOUT_BLANK_URI) {
|
|
|
const downloadOptions = { asDataURI: false, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled, charset: options.charset };
|
|
|
- let stylesheetContent = await Download.getContent(resourceURL, downloadOptions);
|
|
|
- stylesheetContent = DomUtil.removeCssComments(stylesheetContent);
|
|
|
+ const content = await Download.getContent(resourceURL, downloadOptions);
|
|
|
+ resourceURL = content.resourceURL;
|
|
|
+ let stylesheetContent = DomUtil.removeCssComments(content.data);
|
|
|
if (options.compressCSS) {
|
|
|
stylesheetContent = DOM.compressCSS(stylesheetContent);
|
|
|
}
|