From da5fd96e5e9364a6ae26a9a2ffe5dad294d93ec7 Mon Sep 17 00:00:00 2001 From: Marin Ivanov Date: Tue, 20 Aug 2024 15:36:06 +0300 Subject: fix hash handling --- app.js | 4 ++-- ka.js | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app.js b/app.js index 8dec438..aa1fcdc 100644 --- a/app.js +++ b/app.js @@ -97,8 +97,8 @@ const routes = { p("The requested page is not available.") ), }; -const onchange = () => { - doc.querySelectorAll('nav a').forEach(x => x.$cls((location.href===x.href)?"active":"")); +const onchange = (h) => { + doc.querySelectorAll('nav a').forEach(x => x.$cls(x.attr("href")===h?"active":"")); loading(isLoading); }; diff --git a/ka.js b/ka.js index b7f9d6a..09257c7 100644 --- a/ka.js +++ b/ka.js @@ -50,14 +50,15 @@ var img = (src) => tag("img", {src}); var input = (type) => tag("input", {type}); function router(root, routes, onreload) { - function reload() { - const h = doc.location.hash.substr(1) || "/"; - const r = h in routes ? h : ""; - root.replaceChildren(routes[r]()); - onreload && onreload(r); - }; - reload(); - window.addEventListener("hashchange", reload); - root.reload = reload; + function reload() { + const h = doc.location.hash || "#"; + const p = h.substr(1) || "/"; + const r = p in routes ? p : ""; + root.replaceChildren(routes[r]()); + onreload && onreload(h); + }; + reload(); + window.addEventListener("hashchange", reload); + root.reload = reload; } -- cgit v1.2.3