沧小月
沧小月
  • 发布:2016-02-22 01:06
  • 更新:2016-02-22 09:59
  • 阅读:8950

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

分类:MUI

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

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

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

2016-02-22 01:06 负责人:无 分享
已邀请:
maq

maq

客户端重新访问一个页面时要不要刷新,取决于服务器在响应这个页面请求时在 header 里设置的缓存策略。缓存策略也有多种不同的写法,可能你的服务器跟微信内置浏览器没有一致。

不过,【是否刷新】跟【是否恢复上一次的卷滚位置】还不是同一个事情。如果浏览器不能自动回到上一次的卷滚位置,就需要自己想办法了。比如阅读微信公众号文章的那个页面,只要你看过一篇文章,无论什么时候再进去看,都会回到上次的位置(即使在桌面浏览器中也是如此),据我观察,就是在页面中用 js 保存了卷滚位置,加载后强制恢复。

  • 沧小月 (作者)

    事实上我试过使用meta标签来通知浏览器缓存我的页面,然而在微信浏览器里的结果是我按了返回后,他给我取了他缓存的页面,然后刷新了一下,导致我的滚动条又回到最上面了。。。

    其实我只是想在微信浏览器上实现其他浏览器的情况,试了safari、chrome、ie、firefox、安卓内置浏览器,在使用浏览器自带的返回按钮时,都不会重新加载我前一个页面,只有微信内置浏览器会重新加载。。。

    2016-02-22 15:37

该问题目前已经被锁定, 无法添加新回复