/** * Navigation und dynamisches Laden von Einzelseiten (Single Page App Verhalten). * Dieses Skript reagiert auf Klicks im Menü/Sidebar, lädt die gewünschte HTML-Teilseite * per Fetch-API nach und führt die jeweilige Seite-Initialisierungsfunktion aus. */ document.addEventListener("DOMContentLoaded", () => { /** * Setzt die "active"-Klasse im Menü für die ausgewählte Seite, * damit der Benutzer sieht, in welchem Bereich er sich befindet. * @param {string} id - Die ID des Menü-Links (z.B. "nav-home"). */ function setActiveMenu(id) { // Alle Sidebar-Links zurücksetzen document.querySelectorAll("#sidebar .nav-link").forEach(link => link.classList.remove("active")); // Alle Navbar-Links zurücksetzen document.querySelectorAll(".navbar-nav .nav-link").forEach(link => link.classList.remove("active")); // Aktiven Link anhand seiner ID suchen und hervorheben const activeLink = document.getElementById(id); if (activeLink) activeLink.classList.add("active"); } /** * Lädt eine Teilseite (.html) dynamisch aus dem "pages/"-Ordner in den Hauptbereich. * Nach dem Laden werden die DOM-Elemente initialisiert (z.B. Event-Listener gebunden), * indem die entsprechende globale "init..."-Funktion aufgerufen wird. * @param {string} page - Der Name der HTML-Datei (ohne Endung, z.B. "play"). * @param {string} menuId - Die ID des zugehörigen Menüpunkts zur visuellen Aktivierung. */ window.loadPage = function loadPage(page, menuId) { // fetch lädt das HTML-Snippet. cache: "no-store" verhindert veraltete Stände im Browser-Cache. fetch("pages/" + page + ".html", { cache: "no-store" }) .then(response => { if (!response.ok) { throw new Error("HTTP-Fehler " + response.status); } return response.text(); }) .then(data => { // Das geladene HTML-Fragment in den Haupt-Container rendern document.getElementById("main-content").innerHTML = data; // Aktiven Menüpunkt visuell kennzeichnen setActiveMenu(menuId); // Da das DOM nun neu aufgebaut wurde, müssen wir die Event-Handler // für die jeweilige Seite neu registrieren (Init-Funktionen). if (page === "login" && typeof window.initLoginPage === "function") { window.initLoginPage(); } if (page === "leaderboard" && typeof window.initLeaderboardPage === "function") { window.initLeaderboardPage(); } if (page === "scores" && typeof window.initScoresPage === "function") { window.initScoresPage(); } if (page === "play" && typeof window.initPlayPage === "function") { window.initPlayPage(); } if (page === "messages" && typeof window.initMessagesPage === "function") { window.initMessagesPage(); } }) .catch(error => { console.error("Fehler beim Laden von " + page + ":", error); // Fehlermeldung für den Benutzer in den Hauptbereich einbetten document.getElementById("main-content").innerHTML = "