Skip to content

Commit 71d0cd9

Browse files
committed
Added a process to insert styles after the DOM head element is detected by MutationObserver
1 parent a0c5d5f commit 71d0cd9

2 files changed

Lines changed: 27 additions & 7 deletions

File tree

app/src/main/assets/hide-elements.js

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(function() {
1+
(function () {
22
const HIDE_SELECTORS = `
33
header,
44
nav[class^="md"],
@@ -19,13 +19,35 @@
1919
document.head.appendChild(style);
2020
}
2121

22+
/* wait for the Head element to be available */
23+
function waitForHead(callback) {
24+
if (document.head) {
25+
callback();
26+
return;
27+
}
28+
29+
const observer = new MutationObserver(function (mutations) {
30+
if (document.head) {
31+
observer.disconnect();
32+
callback();
33+
}
34+
});
35+
36+
observer.observe(document, {
37+
childList: true,
38+
subtree: true
39+
});
40+
}
41+
2242
/* initially hide elements with `visibility: hidden` */
23-
window.hideElementsInitially = function() {
24-
injectCSS(HIDE_SELECTORS + ` { visibility: hidden !important; }`);
43+
window.hideElementsInitially = function () {
44+
waitForHead(function () {
45+
injectCSS(HIDE_SELECTORS + ` { visibility: hidden !important; }`);
46+
});
2547
};
2648

2749
/* finally hide elements with `display: none` */
28-
window.hideElementsFinal = function() {
50+
window.hideElementsFinal = function () {
2951
injectCSS(`
3052
* { -webkit-tap-highlight-color: rgba(0, 0, 0,.1); }
3153
${HIDE_SELECTORS} {

app/src/main/java/com/example/deeplviewer/webview/MyWebViewClient.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ class MyWebViewClient(
3939
override fun onPageStarted(view: WebView, url: String, favicon: android.graphics.Bitmap?) {
4040
// initially hide elements with `visibility: hidden`
4141
view.loadJavaScript("hide-elements.js")
42-
view.postDelayed({
43-
view.evaluateJavascript("hideElementsInitially();", null)
44-
}, 100)
42+
view.evaluateJavascript("hideElementsInitially();", null)
4543
}
4644

4745
override fun onPageFinished(view: WebView, url: String) {

0 commit comments

Comments
 (0)