|
|
@@ -451,7 +451,16 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}
|
|
|
|
|
|
resetCharsetMeta() {
|
|
|
- this.doc.querySelectorAll("meta[charset], meta[http-equiv=\"content-type\"]").forEach(element => element.remove());
|
|
|
+ this.doc.querySelectorAll("meta[charset], meta[http-equiv=\"content-type\"]").forEach(element => {
|
|
|
+ const charSetDeclaration = element.content.split(";")[1];
|
|
|
+ if (charSetDeclaration) {
|
|
|
+ const charSet = charSetDeclaration.split("=")[1]
|
|
|
+ if (charSet) {
|
|
|
+ this.charSet = charSet.trim().toLowerCase();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ element.remove();
|
|
|
+ });
|
|
|
const metaElement = this.doc.createElement("meta");
|
|
|
metaElement.setAttribute("charset", "utf-8");
|
|
|
this.doc.head.insertBefore(metaElement, this.doc.head.firstElementChild);
|
|
|
@@ -839,7 +848,8 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
|
|
|
async resolveLinkedStylesheetURLs() {
|
|
|
await Promise.all(Array.from(this.doc.querySelectorAll("link[rel*=stylesheet]")).map(async linkElement => {
|
|
|
- const stylesheetContent = await DomProcessorHelper.resolveLinkStylesheetURLs(linkElement.href, this.baseURI, linkElement.media, { maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
|
|
|
+ const options = { maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled, charSet: this.charSet };
|
|
|
+ const stylesheetContent = await DomProcessorHelper.resolveLinkStylesheetURLs(linkElement.href, this.baseURI, linkElement.media, options);
|
|
|
const styleElement = this.doc.createElement("style");
|
|
|
styleElement.textContent = stylesheetContent;
|
|
|
linkElement.parentElement.replaceChild(styleElement, linkElement);
|
|
|
@@ -1007,7 +1017,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
static async resolveLinkStylesheetURLs(resourceURL, baseURI, media, options) {
|
|
|
resourceURL = DomUtil.normalizeURL(resourceURL);
|
|
|
if (resourceURL && resourceURL != baseURI && resourceURL != ABOUT_BLANK_URI) {
|
|
|
- let stylesheetContent = await Download.getContent(resourceURL, { asDataURI: false, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
+ let stylesheetContent = await Download.getContent(resourceURL, { asDataURI: false, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled, charSet: options.charSet });
|
|
|
stylesheetContent = await DomProcessorHelper.resolveImportURLs(stylesheetContent, resourceURL, options);
|
|
|
stylesheetContent = DomUtil.wrapMediaQuery(stylesheetContent, media);
|
|
|
return stylesheetContent;
|