Browser Zurück/Vor-Navigation: pushState statt replaceState, popstate-Event

This commit is contained in:
Meleki committed 2026-03-02 13:02:52 +01:00
1 parent 4e7058e481
commit 485f47b29a
4 files changed
+27 -12

No files matched your search

+17 -7
View File
@@ -4,25 +4,35 @@ document.addEventListener('DOMContentLoaded', async () => {
// Auth-Check: Eingeloggt?
var user = await apiMe();
if (!user) {
await navigateTo('login');
await navigateTo('login', {}, { replace: true });
return;
}
const { page, id } = parseHash();
var target = page === 'login' ? 'dashboard' : page;
await navigateTo(target, { id });
await navigateTo(target, { id }, { replace: true });
});
// Hash-Änderungen abfangen
window.addEventListener('hashchange', async () => {
const { page, id } = parseHash();
// Browser Zurück/Vor-Button
window.addEventListener('popstate', async (e) => {
var page, id;
if (e.state && e.state.page) {
page = e.state.page;
id = e.state.params ? e.state.params.id : null;
} else {
const parsed = parseHash();
page = parsed.page;
id = parsed.id;
}
// Login-Seite immer erlauben, alles andere nur wenn eingeloggt
if (page !== 'login') {
var user = await apiMe();
if (!user) {
await navigateTo('login');
await navigateTo('login', {}, { replace: true });
return;
}
}
await navigateTo(page, { id });
await navigateTo(page, { id }, { replace: true });
});