feat(web): use history routing and preserve scroll on filter changes

This commit is contained in:
kairee committed 2026-11-01 01:55:37 +08:00
1 parent 1b08854b25
commit 52a8d90c47
9 files changed
+113 -33

No files matched your search

+3 -3
View File
@@ -46,7 +46,7 @@ export async function renderVideo(root, { params, query }) {
root.innerHTML = `<section class="page video-page">
<header class="page-head">
<a class="back-link" href="#/rank?scope=video&sort=heat">← 返回榜单</a>
<a class="back-link" href="/rank?scope=video&sort=heat">← 返回榜单</a>
<div class="head-actions">
${detail.url ? `<a class="button ghost" href="${escapeAttr(detail.url)}" target="_blank" rel="noreferrer">打开 B 站</a>` : ""}
</div>
@@ -57,7 +57,7 @@ export async function renderVideo(root, { params, query }) {
<div class="detail-hero-body">
<h1>${escapeHtml(detail.title)}</h1>
<div class="detail-meta">
${detail.up_mid ? `<a class="inline-link" href="#/up/${detail.up_mid}">${escapeHtml(detail.up_name || "未知 UP")}</a>` : escapeHtml(detail.up_name || "未知 UP")}
${detail.up_mid ? `<a class="inline-link" href="/up/${detail.up_mid}">${escapeHtml(detail.up_name || "未知 UP")}</a>` : escapeHtml(detail.up_name || "未知 UP")}
<span>${escapeHtml(formatDate(detail.pubdate))}</span>
<span>${escapeHtml(formatDuration(detail.duration))}</span>
${detail.folder_title ? badge(detail.folder_title) : ""}
@@ -98,7 +98,7 @@ export async function renderVideo(root, { params, query }) {
${up ? `<section class="panel">
<div class="section-head">
<h2>该 UP 的其他视频</h2>
<a class="text-link" href="#/up/${detail.up_mid}">查看 UP 页 →</a>
<a class="text-link" href="/up/${detail.up_mid}">查看 UP 页 →</a>
</div>
<div class="video-list">
${others.length ? others.map((item) => videoCard(item)).join("") : emptyState("没有其他视频")}