diff --git a/src/modules/protection/ContentProtectionModule.ts b/src/modules/protection/ContentProtectionModule.ts index 6aa62227..1f387700 100644 --- a/src/modules/protection/ContentProtectionModule.ts +++ b/src/modules/protection/ContentProtectionModule.ts @@ -49,6 +49,7 @@ export interface ContentProtectionModuleProperties { hideTargetUrl: boolean; disableDrag: boolean; supportedBrowsers: string[]; + excludeNodes: string[]; } export interface ContentProtectionModuleConfig @@ -1373,8 +1374,13 @@ export class ContentProtectionModule implements ReaderModule { return textNodes.map((node) => { const { top, height, left, width } = this.measureTextNode(node); const scrambled = - node.parentElement?.nodeName === "option" || - node.parentElement?.nodeName === "script" + node.parentElement && + ((this.properties?.excludeNodes && + this.properties?.excludeNodes.indexOf( + node.parentElement.nodeName.toLowerCase() + ) > -1) || + node.parentElement?.nodeName.toLowerCase() === "option" || + node.parentElement?.nodeName.toLowerCase() === "script") ? node.textContent : this.obfuscateText(node.textContent ?? ""); let rect: ContentProtectionRect = { diff --git a/src/modules/sampleread/SampleReadEventHandler.ts b/src/modules/sampleread/SampleReadEventHandler.ts index c7c83d06..23d7ca61 100644 --- a/src/modules/sampleread/SampleReadEventHandler.ts +++ b/src/modules/sampleread/SampleReadEventHandler.ts @@ -145,7 +145,7 @@ export default class SampleReadEventHandler { this.navigator.errorMessage.style.backgroundColor = "rgb(255, 255, 255)"; this.navigator.errorMessage.innerHTML = - this.navigator.sample?.popup ?? ""; + "" + this.navigator.sample?.popup + "" ?? ""; } } else { this.navigator.iframes[0].focus(); diff --git a/src/styles/sass/reader/_error.scss b/src/styles/sass/reader/_error.scss index d5fcf7f7..1df29b58 100644 --- a/src/styles/sass/reader/_error.scss +++ b/src/styles/sass/reader/_error.scss @@ -18,13 +18,12 @@ */ .error { - position: relative; + position: sticky; z-index: 20; background-color: transparentize($ui-white, 0.125); color: $error-red; height: 100%; top: 0; - padding-top: 40vh; text-align: center; width: 100%; -webkit-user-select: none; @@ -42,9 +41,12 @@ } span { - display: block; + display: flex; margin-bottom: 0.75rem; font-size: 1.2rem; + height: 100vh; + justify-content: center; + align-items: center; } button { diff --git a/src/styles/sass/reader/_loading.scss b/src/styles/sass/reader/_loading.scss index 247e2f16..116783fe 100644 --- a/src/styles/sass/reader/_loading.scss +++ b/src/styles/sass/reader/_loading.scss @@ -44,7 +44,7 @@ } .loading { - position: sticky; + position: absolute; width: 100%; height: 100%; top: 0; diff --git a/viewer/index_dita.html b/viewer/index_dita.html index cf6ae7d9..9e84d452 100644 --- a/viewer/index_dita.html +++ b/viewer/index_dita.html @@ -1310,6 +1310,7 @@ disableContextMenu: true, hideTargetUrl: true, disableDrag: false, + excludeNodes:["script", "option"], supportedBrowsers: [ // this will only be used if enforceSupportedBrowsers is true, and has nothing to do with the r2d2bc modules supported browsers "Chrome", "ChromeAndroid", "Edge", "Firefox", "iOS", "Safari", ], @@ -1405,7 +1406,7 @@ }).catch(error => { console.error(error); - document.getElementById("reader-error").innerText = error.message; + document.getElementById("reader-error").innerHTML = ""+error.message +""; }); function setColumns(columnCount) {