hjsilicon/js/header.js

160 lines
5.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const headerLangData = {
zh: {
nav: {
home: "首页",
business: "主营业务",
products: "产品案例",
support: "技术支持",
future: "展望未来",
about: "关于我们"
},
btn: "English",
logo: "../imgs/svg/logo.svg"
},
en: {
nav: {
home: "Home",
business: "Business",
products: "Products",
support: "Support",
future: "Future",
about: "About Us"
},
btn: "简体中文",
logo: "../imgs/svg/logo_en.svg"
}
};
// 语言显示更新函数
function updateHeaderLanguageDisplay(lang) {
const currentFlag = document.getElementById('current-flag');
const currentLangText = document.getElementById('current-lang');
if (currentFlag && currentLangText) {
// 检查图片路径是否需要调整
const isRootPage = window.location.pathname.includes('index.html') ||
window.location.pathname.endsWith('/');
const imgPathPrefix = isRootPage ? './imgs/flags/' : '../imgs/flags/';
if (lang === 'en') {
currentFlag.src = `${imgPathPrefix}en.svg`;
currentLangText.textContent = 'English';
} else {
currentFlag.src = `${imgPathPrefix}zh.svg`;
currentLangText.textContent = '简体中文';
}
}
}
function setHeaderLang(lang) {
const data = headerLangData[lang];
// 导航文本
const navHome = document.getElementById("nav-home");
if (navHome) navHome.textContent = data.nav.home;
const navBusiness = document.getElementById("nav-business");
if (navBusiness) navBusiness.textContent = data.nav.business;
const navProducts = document.getElementById("nav-products");
if (navProducts) navProducts.textContent = data.nav.products;
const navSupport = document.getElementById("nav-support");
if (navSupport) navSupport.textContent = data.nav.support;
const navFuture = document.getElementById("nav-future");
if (navFuture) navFuture.textContent = data.nav.future;
const navAbout = document.getElementById("nav-about");
if (navAbout) navAbout.textContent = data.nav.about;
// logo
// const logoImg = document.getElementById("logo-img");
// if (logoImg) logoImg.src = data.logo;
// 更新语言显示
updateHeaderLanguageDisplay(lang);
}
// 处理语言切换
function handleHeaderLangToggle(lang) {
window.currentLang = lang;
localStorage.setItem('siteLang', lang);
setHeaderLang(lang);
// 如果有页面特定的语言处理函数,也调用它
if (typeof applyLang === 'function') {
applyLang(lang);
}
// 如果在aboutUs页面还需要更新地图信息
if (typeof updateMapInfo === 'function') {
updateMapInfo(lang);
}
}
document.addEventListener('DOMContentLoaded', () => {
let currentLang = localStorage.getItem('siteLang') || "zh";
// 初始化语言
setHeaderLang(currentLang);
// 获取语言切换相关的DOM元素
const langBtn = document.getElementById('lang-btn');
const langDropdown = document.getElementById('lang-dropdown');
const langItems = document.querySelectorAll('.lang-item');
if (langBtn) {
// 切换下拉菜单显示/隐藏
langBtn.addEventListener('click', function(e) {
e.stopPropagation(); // 阻止事件冒泡
langDropdown.classList.toggle('show');
const arrow = langBtn.querySelector('.arrow');
if (arrow) {
arrow.style.transform = langDropdown.classList.contains('show') ? 'rotate(180deg)' : 'rotate(0)';
}
});
// 点击其他区域关闭下拉菜单
document.addEventListener('click', function(event) {
if (!event.target.closest('.lang-dropdown') && langDropdown) {
langDropdown.classList.remove('show');
const arrow = langBtn.querySelector('.arrow');
if (arrow) {
arrow.style.transform = 'rotate(0)';
}
}
});
// 语言选择事件
langItems.forEach(item => {
item.addEventListener('click', function() {
const lang = this.getAttribute('data-lang');
if (lang !== currentLang) {
currentLang = lang;
handleHeaderLangToggle(lang);
}
langDropdown.classList.remove('show');
const arrow = langBtn.querySelector('.arrow');
if (arrow) {
arrow.style.transform = 'rotate(0)';
}
});
});
} else {
// 兼容旧版切换按钮
const langToggle = document.getElementById("lang-toggle");
if (langToggle) {
langToggle.addEventListener("click", () => {
currentLang = currentLang === "zh" ? "en" : "zh";
handleHeaderLangToggle(currentLang);
});
langToggle.addEventListener("keydown", e => {
if (e.key === "Enter" || e.key === " ") {
currentLang = currentLang === "zh" ? "en" : "zh";
handleHeaderLangToggle(currentLang);
}
});
}
}
});