const routes = { page1: "pages/page1.html", page2: "pages/page2.html", page3: "pages/page3.html", page4: "pages/page4.html", page5: "pages/page5.html", page6: "pages/page6.html", page7: "pages/page7.html", page8: "pages/page8.html", }; let currentPage = null; const pageHandlers = { page1: {}, page2: { init: () => window.initPage2?.(), destroy: () => window.destroyPage2?.() }, page3: {}, page4: {}, page5: {}, page6: {}, page7: {}, page8: {}, }; function clearOldScripts() { document.querySelectorAll("script[data-dynamic='1']").forEach(s => s.remove()); } function runScripts(container) { const scripts = container.querySelectorAll("script"); scripts.forEach(oldScript => { const s = document.createElement("script"); s.dataset.dynamic = "1"; if (oldScript.src) { s.src = oldScript.src; } else { s.textContent = oldScript.textContent; } document.body.appendChild(s); }); } async function loadPage(name) { const view = document.getElementById("view"); const url = routes[name]; if (!url) { view.innerHTML = "
无法找到页面
"; return; } try { const res = await fetch(url, { credentials: "include" }); const html = await res.text(); if (html.includes("login.html") || html.includes("登录")) { window.location.href = "/"; return; } const temp = document.createElement("div"); temp.innerHTML = html; if (currentPage && pageHandlers[currentPage]?.destroy) { pageHandlers[currentPage].destroy(); } clearOldScripts(); view.innerHTML = ""; view.appendChild(temp); runScripts(temp); currentPage = name; if (pageHandlers[name]?.init) { pageHandlers[name].init(); } } catch (e) { console.error("loadPage error:", e); view.innerHTML = "
页面加载失败
"; } }