fix: mermaid script load order

This commit is contained in:
Jacky Zhao
2025-03-10 16:20:08 -07:00
parent a8001e9554
commit 9e3e711646
4 changed files with 34 additions and 29 deletions

View File

@ -56,8 +56,10 @@ function startLoading() {
}, 100)
}
let isNavigating = false
let p: DOMParser
async function navigate(url: URL, isBack: boolean = false) {
async function _navigate(url: URL, isBack: boolean = false) {
isNavigating = true
startLoading()
p = p || new DOMParser()
const contents = await fetchCanonical(url)
@ -128,6 +130,19 @@ async function navigate(url: URL, isBack: boolean = false) {
delete announcer.dataset.persist
}
async function navigate(url: URL, isBack: boolean = false) {
if (isNavigating) return
isNavigating = true
try {
await _navigate(url, isBack)
} catch (e) {
console.error(e)
window.location.assign(url)
} finally {
isNavigating = false
}
}
window.spaNavigate = navigate
function createRouter() {
@ -145,21 +160,13 @@ function createRouter() {
return
}
try {
navigate(url, false)
} catch (e) {
window.location.assign(url)
}
navigate(url, false)
})
window.addEventListener("popstate", (event) => {
const { url } = getOpts(event) ?? {}
if (window.location.hash && window.location.pathname === url?.pathname) return
try {
navigate(new URL(window.location.toString()), true)
} catch (e) {
window.location.reload()
}
navigate(new URL(window.location.toString()), true)
return
})
}