当前位置: 首页 > news >正文

js刷新页面的几种方法

JavaScript 刷新页面的几种常用方法

在前端开发中,刷新当前页面是常见需求。JavaScript 提供了多种方式实现页面刷新,下面列出最常用的6 种方法,并附带说明、优缺点和适用场景。

方法代码示例说明是否保留表单数据/滚动位置推荐度
1. location.reload()(最推荐)```javascript
2. location.reload(true)(强制刷新)javascript<br>location.reload(true);<br>已废弃(现代浏览器忽略 true 参数),但旧代码中常见。实际效果同 reload()不保留★★★
3. window.location.href = window.location.hrefjavascript<br>window.location.href = window.location.href;<br>将当前 URL 重新赋值,触发新请求不保留★★★★
4. window.location.assign/current URLjavascript<br>window.location.assign(window.location.href);<br>与 href 赋值类似,加载新文档不保留★★★
5. history.go(0)javascript<br>history.go(0);<br>等同于点击浏览器“刷新”按钮,效果最接近用户手动刷新有时能保留部分状态(如滚动位置)★★★★
6. document.location.replace(current URL)javascript<br>document.location.replace(window.location.href);<br>替换当前历史记录(不会增加新历史项),刷新后无法“后退”到刷新前页面不保留★★(慎用)
详细示例与使用场景

1. 最推荐:location.reload()

<buttononclick="location.reload()">刷新页面</button>
  • 简单、标准、兼容性最好。
  • 适用于大多数场景(如数据更新后刷新、登录超时跳转后刷新等)。

2. 强制从服务器重新加载(绕过缓存)
现代浏览器中reload(true)已无效,推荐使用Cache-Control或以下方式:

// 方法A:添加时间戳参数(推荐)window.location.href=window.location.pathname+'?t='+newDate().getTime();// 方法B:修改 headers(需后端配合或 Service Worker)location.reload();// 结合 meta 或 headers: Cache-Control: no-cache

3. 保留当前路径和查询参数刷新

// 当前页面是 /user?id=123,刷新后仍保持参数window.location.href=window.location.href;

4. history.go(0) - 最像手动刷新

<button onclick="history.go(0)">刷新</button>
  • 用户体验最好,有时能保留滚动位置和部分表单状态。
  • 单页应用(SPA)中慎用,可能引发意外行为。

5. 特殊场景:replace(不留历史记录)

// 登录成功后跳转并刷新,防止后退回到登录页document.location.replace('/dashboard');
实际应用组合示例
<!-- 登录成功后刷新页面 --><script>functionloginSuccess(){alert('登录成功!');location.reload();// 推荐方式}</script><!-- 数据提交后刷新(防止重复提交) -->function submitForm() { // 提交 AJAX... if (success) { location.reload(); } }<!-- 定时自动刷新(如监控页面) -->setInterval(() => { location.reload(); }, 30000); // 每30秒刷新一次
总结推荐顺序
  1. 优先使用location.reload()—— 最标准、最简单。
  2. 需要绕过缓存—— 在 URL 加时间戳参数。
  3. 追求最像手动刷新—— 用history.go(0)
  4. 避免产生新历史记录—— 用location.replace()

99% 的场景下,location.reload()就足够了!

http://www.jsqmd.com/news/205966/

相关文章:

  • TreeUtil树构建工具-超好用工具
  • 计算机专业毕设怎么选题?老师最容易通过的 20 个方向
  • Visual Studio 2022中配置cuda环境
  • AI 技术在英语培训中的应用
  • 从零到一全面掌握MySQL:安装配置、SQL详解与数据库实战理解
  • MySQL保姆级教程:从安装部署到核心概念,快速上手避坑指南
  • tcpdump抓包实战:命令行网络诊断利器
  • 飞书多维表格基础操作
  • 一篇搞定MySQL:从环境搭建到深入理解,高效入门数据库
  • 网络延迟与丢包问题排查实战
  • 欧盟EN 18031-1无线设备认证
  • MT-Safety 标签env 和 locale
  • EN 18031-1通用网络安全认证新规
  • 除了安全更新,EN 18031-1还有哪些重要的认证要求?
  • 写给开发者、内容创作者:当你“快做完了”却开始崩,这不是技术问题
  • 如何确保设备满足EN 18031-1标准中的安全更新要求?
  • 通达信专抓超跌副图无未来
  • 安达发|石油化工行业自动排产软件:驱动产业升级的核心引擎
  • 计算机毕设从选题到答辩,全程可指导(真实案例)
  • 通达信日周共振
  • AI 量化为什么不敢上线?——我的 Fail-Closed 模板实战
  • Python+Vue的大学生创新创业调查问卷系统 Pycharm django flask
  • 通达信回归斜率线
  • 红娘子双线强弱源码分享贴图
  • 如何在 ALCOR 强风控逻辑约束下,如何把 V8.2 年化拉到 28%?——一次“先别死,再赚钱”的量化实战复盘
  • 【毕业设计】机器学习基于python的砖头墙裂缝识别
  • 《波段很赚米》指标 通达信 主图/副图 源码 贴图 说明 无未来
  • springboot疫苗发布和接种预约系统(11650)
  • 解锁盲盒新玩法✨定制你的专属小程序
  • 深度学习计算机毕设之基于人工智能python深度学习的砖头墙裂缝识别