first commit

This commit is contained in:
gzy
2025-12-16 11:39:15 +08:00
commit a3bdbee7c2
118 changed files with 34631 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
document.addEventListener("DOMContentLoaded", function() {
// 加载 Header添加缓存控制确保获取最新版本
fetch('/public/components/header.html', {
cache: 'no-cache',
headers: {
'Cache-Control': 'no-cache'
}
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => {
const placeholder = document.getElementById('header-placeholder');
if (placeholder) {
placeholder.innerHTML = data;
// 确保所有链接都是绝对路径
const links = placeholder.querySelectorAll('a[href]');
links.forEach(link => {
const href = link.getAttribute('href');
if (href && !href.startsWith('/') && !href.startsWith('http') && !href.startsWith('#')) {
// 如果是相对路径,转换为绝对路径
if (href.startsWith('./')) {
link.setAttribute('href', href.replace('./', '/'));
} else if (!href.startsWith('/')) {
link.setAttribute('href', '/' + href);
}
}
});
setActiveLink(); // 头部加载完后设置高亮
}
})
.catch(error => console.error('Error loading header:', error));
// 加载 Footer
fetch('/public/components/footer.html', {
cache: 'no-cache',
headers: {
'Cache-Control': 'no-cache'
}
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => {
const placeholder = document.getElementById('footer-placeholder');
if (placeholder) {
placeholder.innerHTML = data;
}
})
.catch(error => console.error('Error loading footer:', error));
});
// 设置导航高亮
function setActiveLink() {
const currentPath = window.location.pathname;
const page = currentPath.split("/").pop() || "index.html"; // 如果是根路径默认为index.html
const links = document.querySelectorAll('.nev-child-1 > li > a');
links.forEach(link => {
// 优先使用 data-page 属性,如果没有则从 href 中提取文件名
let targetPage = link.getAttribute('data-page');
if (!targetPage) {
const href = link.getAttribute('href') || '';
// 处理绝对路径(如 /Browse.html和相对路径如 ./Browse.html
if (href.startsWith('/')) {
targetPage = href.split('/').pop();
} else {
targetPage = href.replace(/^\.\//, '').split('?')[0]; // 移除 ./ 前缀和查询参数
}
}
// 简单匹配:如果当前文件名包含目标链接名 (处理 Search.html 和 Search_merged.html 的情况)
// 或者完全相等
if (page === targetPage || (targetPage !== 'index.html' && page.includes(targetPage.split('.')[0]))) {
link.classList.add('active-link'); // 在layout.css中定义样式
// 同时设置原有行内样式的颜色(兼容旧逻辑)
link.style.color = "black";
}
});
}