|
|
@@ -9,21 +9,38 @@ const routes = {
|
|
|
page8: "pages/page8.html",
|
|
|
};
|
|
|
|
|
|
-async function loadPage(name){
|
|
|
- const view = document.getElementById("view");
|
|
|
+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){
|
|
|
+ if (!url) {
|
|
|
view.innerHTML = "<div class='card'>无法找到页面</div>";
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- try{
|
|
|
- const res = await fetch(url, {
|
|
|
- credentials: "include"
|
|
|
- });
|
|
|
-
|
|
|
+ try {
|
|
|
+ const res = await fetch(url, { credentials: "include" });
|
|
|
const html = await res.text();
|
|
|
|
|
|
if (html.includes("login.html") || html.includes("登录")) {
|
|
|
@@ -31,8 +48,37 @@ async function loadPage(name){
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- view.innerHTML = html;
|
|
|
- }catch(e){
|
|
|
+ const temp = document.createElement("div");
|
|
|
+ temp.innerHTML = html;
|
|
|
+
|
|
|
+ clearOldScripts();
|
|
|
+
|
|
|
+ view.innerHTML = "";
|
|
|
+ view.appendChild(temp);
|
|
|
+
|
|
|
+ runScripts(temp);
|
|
|
+
|
|
|
+ switch (name) {
|
|
|
+ case "page1":
|
|
|
+ break;
|
|
|
+ case "page2":
|
|
|
+ initPage2();
|
|
|
+ break;
|
|
|
+ case "page3":
|
|
|
+ break;
|
|
|
+ case "page4":
|
|
|
+ break;
|
|
|
+ case "page5":
|
|
|
+ break;
|
|
|
+ case "page6":
|
|
|
+ break;
|
|
|
+ case "page7":
|
|
|
+ break;
|
|
|
+ case "page8":
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error("loadPage error:", e);
|
|
|
view.innerHTML = "<div class='card'>页面加载失败</div>";
|
|
|
}
|
|
|
}
|