移动端iOS返回上一路由页面白屏
问题描述
1、最近在做H5项目的时候,发现使用history.back()在IOS上返回上一页的时候,会有很严重的bug。我的场景是列表页滚动了超出一屏之后,进入详情页,再点击返回列表页,在iOS上就出现了白屏的现象,但是触屏或者滑一下,页面就又恢复了。
解决方案
使用history.back返回上一页的时候,浏览器会记录页面的滚动位置,而在iOS上面,滚动后返回的时候页面渲染会出现问题,导致白屏。可以利用scrollRestoration属性,它默认是auto,也就是会记录滚动位置(这是H5新增的属性,所以需要判断浏览器是否支持,我实践的是可以兼容大部分移动端机型)
1 2 3 | if ( 'scrollRestoration' in window.history) { window.history.scrollRestoration = 'manual' ; // 改为manual之后,就不会记录滚动位置 } |
在列表页渲染完成的生命周期函数里添加以上代码,可以解决白屏问题
2、a页面是一个长列表,我们滑动到某个地方假设为 100px ,点击之后进入到b页面
- b页面也滚到到100px,产品希望b页面回到顶部
- 再从b页面回到a页面,这时候浏览器的滚动条会自动回到我们跳转前的位置,也就是 100px 的位置。产品希望回到顶部去
b页面代码
1 | window.scrollTo && window.scrollTo(0, 0); // 滚动到初始位置 |
a页面代码
1 2 3 | if ( 'scrollRestoration' in window.history) { window.history.scrollRestoration = 'manual' ; // 改为manual之后,就不会记录滚动位置 } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)