/** * AKSRT User Home — 公开用户主页专属脚本 * * 负责公开主页 Tab 切换和 URL 同步。 */ (function() { 'use strict'; function initUserHomeTabs() { var tabContainer = document.querySelector('.dashboard--public .dashboard-tabs'); if (!tabContainer) return; var tabs = tabContainer.querySelectorAll('[data-tab]'); var panels = {}; var defaultTab = tabs.length ? tabs[0].getAttribute('data-tab') : 'posts'; tabs.forEach(function(tab) { var name = tab.getAttribute('data-tab'); var panel = document.getElementById('panel-' + name); if (panel) { panels[name] = { tab: tab, panel: panel }; } }); function switchTo(name) { if (!panels[name]) name = defaultTab; Object.keys(panels).forEach(function(key) { var active = key === name; panels[key].tab.classList.toggle('is-active', active); panels[key].tab.setAttribute('aria-selected', active ? 'true' : 'false'); panels[key].panel.classList.toggle('is-active', active); panels[key].panel.hidden = !active; }); } function tabFromUrl() { var m = window.location.search.match(/[?&]tab=([^&]+)/); return m ? decodeURIComponent(m[1]) : defaultTab; } function updateUrl(name) { if (!window.history.replaceState) return; var u = new URL(window.location); if (name === defaultTab) { u.searchParams.delete('tab'); } else { u.searchParams.set('tab', name); } window.history.replaceState({}, '', u); } tabs.forEach(function(tab) { tab.addEventListener('click', function() { var name = this.getAttribute('data-tab'); switchTo(name); updateUrl(name); }); }); switchTo(tabFromUrl()); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initUserHomeTabs); } else { initUserHomeTabs(); } })();