You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SvelteKit中获取上一页的子URL(如'/page')?

在SvelteKit中获取上一页的子URL

先修正你现有代码的问题

你当前的代码存在变量未定义就使用的错误,previousUrl在substr调用时还未赋值,导致无法运行。修正后的客户端代码可以这样写:

import { browser } from '$app/environment';

if (browser) {
  const referrerUrl = new URL(document.referrer);
  // 获取完整路径,比如 '/page'
  const pathname = referrerUrl.pathname;
  // 如果只需要路径最后一段(比如 'page'),可以用:
  // const lastSegment = pathname.split('/').pop() || '';
}

利用SvelteKit内置能力追踪上一页

$page本身不直接存储上一页信息,但可以通过SvelteKit的导航API实现追踪:

方法1:用beforeNavigate记录页面导航

在根布局或组件中,通过导航钩子记录上一页路径,适合追踪客户端内的跳转:

<script>
  import { beforeNavigate, page } from '$app/stores';
  import { browser } from '$app/environment';

  let previousPath = '';

  if (browser) {
    beforeNavigate(({ from }) => {
      if (from) {
        previousPath = from.url.pathname;
      }
    });
  }
</script>

{#if previousPath}
  <p>上一页路径:{previousPath}</p>
{/if}

方法2:服务端通过请求头获取(仅初始请求)

如果是服务端渲染场景,可在load函数中获取外部来源的Referer头:

export async function load({ request }) {
  const referer = request.headers.get('referer');
  let previousPath = '';
  if (referer) {
    const url = new URL(referer);
    previousPath = url.pathname;
  }
  return { previousPath };
}

注意:此方法仅能获取进入当前页面的外部来源,无法追踪客户端内的跳转。


内容的提问来源于stack exchange,提问作者Natumanya Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:20:57