fix: settings nav uses onclick scroll instead of hash (avoid router conflict)

This commit is contained in:
2026-07-26 18:37:03 +08:00
parent e97d6ee36f
commit 4bba4b850d
+12 -1
View File
@@ -123,6 +123,17 @@ const PageSettings = {
} }
}); });
document.querySelectorAll('.settings-nav-item').forEach(el => {
el.addEventListener('click', (e) => {
e.preventDefault();
const id = el.getAttribute('data-target');
const section = document.getElementById(id);
if (section) section.scrollIntoView({ behavior: 'smooth', block: 'start' });
document.querySelectorAll('.settings-nav-item').forEach(s => s.classList.remove('active'));
el.classList.add('active');
});
});
document.getElementById('settings-test-mode')?.addEventListener('change', async (e) => { document.getElementById('settings-test-mode')?.addEventListener('change', async (e) => {
const on = e.target.checked; const on = e.target.checked;
await API.updateConfig({ ui_test_mode: on }); await API.updateConfig({ ui_test_mode: on });
@@ -197,7 +208,7 @@ const PageSettings = {
]; ];
return '<div class="settings-layout"><div class="settings-nav">' + return '<div class="settings-layout"><div class="settings-nav">' +
sections.map(s => '<a class="settings-nav-item" href="#' + s.id + '">' + s.label + '</a>').join('') + sections.map(s => '<a class="settings-nav-item" data-target="' + s.id + '">' + s.label + '</a>').join('') +
'</div><div class="settings-main"><div class="animated"><h2 style="font-size:24px;font-weight:700;margin-bottom:24px">设置</h2>' + '</div><div class="settings-main"><div class="animated"><h2 style="font-size:24px;font-weight:700;margin-bottom:24px">设置</h2>' +
'<div class="settings-section" id="sec-forward"><h3>数据转发</h3><p style="font-size:12px;color:var(--text-tertiary);margin-bottom:12px">将收到的游戏原始 UDP 数据包完整转发到下游物理外设</p><div id="forward-list">' + this._forwardListHtml(forwards) + '</div><div style="display:flex;gap:8px;margin-top:8px"><button id="btn-add-forward" class="btn btn-sm btn-secondary">+ 添加目标</button><button id="btn-save-forwards" class="btn btn-sm btn-primary">保存并生效</button></div></div>' + '<div class="settings-section" id="sec-forward"><h3>数据转发</h3><p style="font-size:12px;color:var(--text-tertiary);margin-bottom:12px">将收到的游戏原始 UDP 数据包完整转发到下游物理外设</p><div id="forward-list">' + this._forwardListHtml(forwards) + '</div><div style="display:flex;gap:8px;margin-top:8px"><button id="btn-add-forward" class="btn btn-sm btn-secondary">+ 添加目标</button><button id="btn-save-forwards" class="btn btn-sm btn-primary">保存并生效</button></div></div>' +