commit 20260703

This commit is contained in:
2026-07-03 20:34:27 +08:00
parent 296db4a164
commit c1630b8c10
63 changed files with 3497 additions and 1110 deletions
+51
View File
@@ -6,6 +6,12 @@
var NAV_URL = "/components/nav.html";
var FOOTER_URL = "/components/footer.html";
var FOOT_CSS_ID = "aifo-foot-styles";
var NAV_CSS_ID = "aifo-nav-styles";
var NAV_CSS_URL = "/assets/css/nav.css";
var AIFO_BTN_CSS_ID = "aifo-btn-styles";
var AIFO_BTN_CSS_URL = "/assets/css/aifo-btn.css";
var ICONFONT_CSS_ID = "aifo-iconfont-styles";
var ICONFONT_CSS_URL = "/assets/vendor/icon/iconfont.css";
var FLAG_ICONS_CSS_ID = "aifo-flag-icons-styles";
var FLAG_ICONS_CSS_URL = "/assets/flagicon/css/flag-icons.min.css";
var FOOT_JS_URL = "/js/footer.js";
@@ -114,6 +120,30 @@
document.head.appendChild(link);
}
function ensureNavStyles() {
if (!document.getElementById(ICONFONT_CSS_ID)) {
var iconLink = document.createElement("link");
iconLink.id = ICONFONT_CSS_ID;
iconLink.rel = "stylesheet";
iconLink.href = ICONFONT_CSS_URL;
document.head.appendChild(iconLink);
}
if (!document.getElementById(NAV_CSS_ID)) {
var navLink = document.createElement("link");
navLink.id = NAV_CSS_ID;
navLink.rel = "stylesheet";
navLink.href = NAV_CSS_URL;
document.head.appendChild(navLink);
}
if (!document.getElementById(AIFO_BTN_CSS_ID)) {
var btnLink = document.createElement("link");
btnLink.id = AIFO_BTN_CSS_ID;
btnLink.rel = "stylesheet";
btnLink.href = AIFO_BTN_CSS_URL;
document.head.appendChild(btnLink);
}
}
function loadFooterScript(callback) {
if (footJsLoaded) {
callback();
@@ -139,6 +169,25 @@
document.body.appendChild(script);
}
var navIconsJsLoading = false;
var navIconsJsLoaded = false;
function loadNavIconsScript() {
if (navIconsJsLoaded || navIconsJsLoading) return;
navIconsJsLoading = true;
var script = document.createElement("script");
script.src = "/js/nav-icons.js";
script.onload = function () {
navIconsJsLoaded = true;
navIconsJsLoading = false;
};
script.onerror = function () {
navIconsJsLoading = false;
console.error("[layout.js] Failed to load /js/nav-icons.js");
};
document.body.appendChild(script);
}
function initFooterModule(root) {
ensureFooterStyles();
updateCopyrightYear(root);
@@ -165,9 +214,11 @@
var navHtml = parts[0];
var footerHtml = parts[1];
if (navHtml) {
ensureNavStyles();
ensureFlagIconsStyles();
var navRoot = injectHtml("nav-container", navHtml);
if (navRoot) highlightActiveNav(navRoot);
loadNavIconsScript();
}
if (footerHtml) {
var footerRoot = injectHtml("footer-container", footerHtml);