移动端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之后,就不会记录滚动位置
}

 

posted @   alisa.huang  阅读(1275)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示