From 86f8898ee4d65d90bdd65b83f50527b7332d3760 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 12 Apr 2026 18:24:41 +1200 Subject: [PATCH] Check if Navigation API exists, use setInterval if not --- client/homebrew/brewRenderer/brewRenderer.jsx | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index efdfce5c9..02ec20050 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -135,6 +135,7 @@ const BrewRenderer = (props)=>{ const mainRef = useRef(null); const pagesRef = useRef(null); + const urlRef = useRef(''); if(props.renderer == 'legacy') { rawPages = props.text.split(PAGEBREAK_REGEX_LEGACY); @@ -272,12 +273,24 @@ const BrewRenderer = (props)=>{ const frameDidMount = ()=>{ //This triggers when iFrame finishes internal "componentDidMount" scrollToHash(window.location.hash); - navigation.addEventListener('navigate', (e)=>{ - if(e.hashChange && e.destination.sameDocument){ - const dest = e.destination.url.slice(e.destination.url.indexOf('#')); - scrollToHash(dest); - } - }); + if(navigation) { + navigation.addEventListener('navigate', (e)=>{ + if(e.hashChange && e.destination.sameDocument){ + const dest = e.destination.url.slice(e.destination.url.indexOf('#')); + scrollToHash(dest); + } + }); + } else { + urlRef.current = window.location.href; + setInterval(()=>{ + if(window.location.href != urlRef.current){ + urlRef.current = window.location.href; + const tmpURL = new URL(window.location.href); + const target = tmpURL.hash; + scrollToHash(target); + } + }, 1000); + }; setTimeout(()=>{ //We still see a flicker where the style isn't applied yet, so wait 100ms before showing iFrame renderPages(); //Make sure page is renderable before showing