| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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;
- let loadingPage = false;
- const pageHandlers = {
- page1: {
- init: () => window.initPage1?.(),
- exit: () => window.exitPage1?.()
- },
- page2: {
- init: () => window.initPage2?.(),
- exit: () => window.exitPage2?.()
- },
- page3: {
- init: () => window.initPage3?.(),
- exit: () => window.exitPage3?.()
- },
- page4: {
- init: () => window.initPage4?.(),
- exit: () => window.exitPage4?.()
- },
- page5: {
- init: () => window.initPage5?.(),
- exit: () => window.exitPage5?.()
- },
- page6: {
- init: () => window.initPage6?.(),
- exit: () => window.exitPage6?.()
- },
- page7: {
- init: () => window.initPage7?.(),
- exit: () => window.exitPage7?.()
- },
- page8: {
- init: () => window.initPage8?.(),
- exit: () => window.exitPage8?.()
- },
- };
- 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;
- }
- if (loadingPage) {
- return;
- }
- if (currentPage === name) {
- return;
- }
- try {
- loadingPage = true;
- if (currentPage && pageHandlers[currentPage]?.exit) {
- console.log("exit:", currentPage);
- pageHandlers[currentPage].exit();
- }
- clearOldScripts();
- const res = await fetch(url, {
- credentials: "include"
- });
- const html = await res.text();
- if (html.includes("login.html") || html.includes("登录")) {
- window.location.href = "/";
- return;
- }
- view.innerHTML = html;
- runScripts(view);
- currentPage = name;
- if (pageHandlers[name]?.init) {
- console.log("init:", name);
- pageHandlers[name].init();
- }
- } catch (e) {
- console.error("loadPage error:", e);
- view.innerHTML = "页面加载失败";
- } finally {
- loadingPage = false;
- }
- }
- function setText(id, value, page)
- {
- if (page && currentPage !== page) {
- return;
- }
- const el = document.getElementById(id);
- if (el) el.textContent = value ?? "--";
- }
- function setBtnStatus(id, enabled, page)
- {
- if (page && currentPage !== page) {
- return;
- }
- const btn = document.getElementById(id);
- if (btn) btn.disabled = !enabled;
- }
|