// app/router.options.ts // 统一的滚动位置记忆:返回上一页时尽量还原用户滚动,而不是总是回到顶部 import type { RouterConfig } from '@nuxt/schema' const KEY = (path: string) => `scroll:${path}` export default { scrollBehavior(to, from, savedPosition) { // 工具:读取为某个路径记录的滚动位置 const getStoredPosition = (path?: string) => { if (!process.client || !path) return null try { const raw = sessionStorage.getItem(KEY(path)) if (!raw) return null const pos = JSON.parse(raw) if (typeof pos?.left === 'number' && typeof pos?.top === 'number') { return { left: pos.left, top: pos.top } } } catch (err) { console.warn('[scroll] restore failed', err) } return null } // 优先使用我们持久化的滚动位置;没有再退回浏览器的 savedPosition const stored = getStoredPosition(to?.fullPath) if (stored) return stored if (savedPosition) return savedPosition return { left: 0, top: 0 } } }