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) {