微信内置浏览器,点击返回强制重新加载前一个页面的问题。

发布于 2022-09-02 08:55:25 字数 415 浏览 19 评论 0

这个需求应该挺常见的吧,从列表页A跳转到详情页B,点击返回的时候希望回到列表页A当初浏览的位置。
其他浏览器都没有问题,因为都是静态保持页面原有的状态,只有微信内置浏览器会在返回后重新加载A页面。但也看到很多公众号的微应用返回后并不会刷新,看了看页面源代码也没看出有什么特别的。

目前已知的解决方案:
1、跳转B页面前在sessionStorage中存放A页面的数据,以及滚动条位置,A页面初始化时判断sessionStorage中的值,有的话就不重新请求服务器,而是现实sessionStorage中的值,并且scrollTo到指定位置。
2、往history中插入#以使返回失效,将详情页B做成div弹层,使用自定义的返回按钮来隐藏详情页。

由于种种原因以上两种方案都不想采用,不知道各位有没有更通用更直接的方法,比如在页面头部添加什么信息通知浏览器别刷新之类。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北渚 2022-09-09 08:55:25

原页面没有ajax请求的话 直接记录滚动条位置 存入sessionStorage 很简单。
参考 https://segmentfault.com/a/11...

有的话 就得按照你说的第一条来做了

丶情人眼里出诗心の 2022-09-09 08:55:25

现在微信的内置已经实现了,正常写就可以了~
但有一种情况会使返回失效,当你引用外联脚本的时候就会出现这种问题


之前测试的不全面,iphone手机支持bf-cache,正常情况下没啥问题,为了应对安卓机的这一问题,目前系统采用了sessionstorage,页面增加的工作量及代码还好。但不建议过于复杂的页面这么做,过于复杂的页面建议使用单页面应用的结构,一版会使用swiper+自己写路由。使用angularJs框架应该也是不错的选择。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文