diff --git a/src/modules/pagebreak/PageBreakModule.ts b/src/modules/pagebreak/PageBreakModule.ts index bca6ad25..6913b5bd 100644 --- a/src/modules/pagebreak/PageBreakModule.ts +++ b/src/modules/pagebreak/PageBreakModule.ts @@ -171,6 +171,9 @@ export class PageBreakModule implements ReaderModule { setTimeout(() => { const body = this.delegate.iframes[0].contentDocument?.body; let pageBreaks = body?.querySelectorAll('[*|type="pagebreak"]'); + if (pageBreaks?.length === 0) { + pageBreaks = body?.querySelectorAll("[epub\\:type='pagebreak']"); + } let self = this; function getCssSelector(element: Element): string { diff --git a/src/navigator/IFrameNavigator.ts b/src/navigator/IFrameNavigator.ts index 57ad4e65..10a5dd22 100644 --- a/src/navigator/IFrameNavigator.ts +++ b/src/navigator/IFrameNavigator.ts @@ -1527,10 +1527,13 @@ export class IFrameNavigator extends EventEmitter implements Navigator { for (const iframe of this.iframes) { const head = iframe.contentDocument?.head; if (head) { - head.insertBefore( - IFrameNavigator.createBase(this.currentChapterLink.href), - head.firstChild - ); + const bases = iframe.contentDocument.getElementsByTagName("base"); + if (bases.length === 0) { + head.insertBefore( + IFrameNavigator.createBase(this.currentChapterLink.href), + head.firstChild + ); + } this.injectables?.forEach((injectable) => { if (injectable.type === "style") { @@ -1622,10 +1625,13 @@ export class IFrameNavigator extends EventEmitter implements Navigator { const parser = new DOMParser(); const doc = parser.parseFromString(content, "application/xhtml+xml"); if (doc.head) { - doc.head.insertBefore( - IFrameNavigator.createBase(href), - doc.head.firstChild - ); + const bases = doc.getElementsByTagName("base"); + if (bases.length === 0) { + doc.head.insertBefore( + IFrameNavigator.createBase(href), + doc.head.firstChild + ); + } } const newHTML = doc.documentElement.outerHTML; const iframeDoc = self.iframes[0].contentDocument; @@ -1640,10 +1646,13 @@ export class IFrameNavigator extends EventEmitter implements Navigator { const parser = new DOMParser(); const doc = parser.parseFromString(content, "application/xhtml+xml"); if (doc.head) { - doc.head.insertBefore( - IFrameNavigator.createBase(href), - doc.head.firstChild - ); + const bases = doc.getElementsByTagName("base"); + if (bases.length === 0) { + doc.head.insertBefore( + IFrameNavigator.createBase(href), + doc.head.firstChild + ); + } } const newHTML = doc.documentElement.outerHTML; const iframeDoc = self.iframes[1].contentDocument;