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

Flutter Web:浏览器刷新时如何重定向至根页面(或其他页面)

刷新页面时重定向到根页面的可行方案

你之前尝试的onBeforeUnload、window.location.replace或Navigator.push无效,核心原因是浏览器的安全限制:

  • onBeforeUnload仅用于触发用户确认弹窗,浏览器会直接拦截事件内的重定向操作;
  • 所有unload/beforeunload相关事件中,现代浏览器都会阻止跳转行为,防止恶意网站强制引导用户。

下面是经过验证的可行方案,利用sessionStorage标记页面状态实现重定向:

实现步骤

  1. 页面首次加载时,在load事件中设置标记,证明页面是正常进入而非刷新:
window.addEventListener('load', () => {
  sessionStorage.setItem('isPageLoaded', 'true');
});
  1. 在页面初始化阶段(比如DOMContentLoaded事件中),检查标记是否存在:
document.addEventListener('DOMContentLoaded', () => {
  // 存在标记说明当前是刷新操作
  if (sessionStorage.getItem('isPageLoaded')) {
    // 先清除标记,避免后续循环跳转
    sessionStorage.removeItem('isPageLoaded');
    // 重定向到根页面
    window.location.replace('/');
  }
});

原理说明

sessionStorage的存储内容会在页面刷新时保留,只有关闭浏览器标签/窗口才会清除。首次进入页面时设置标记,刷新后再次加载页面时,检测到标记存在即可判定是刷新行为,进而执行重定向。

该方案不会影响正常的页面导航(比如从其他页面点击链接进入),只有刷新操作会触发重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:54:24