微信内置浏览器,点击返回强制重新加载前一个页面的问题。
这个需求应该挺常见的吧,从列表页A跳转到详情页B,点击返回的时候希望回到列表页A当初浏览的位置。
其他浏览器都没有问题,因为都是静态保持页面原有的状态,只有微信内置浏览器会在返回后重新加载A页面。但也看到很多公众号的微应用返回后并不会刷新,看了看页面源代码也没看出有什么特别的。
目前已知的解决方案:
1、跳转B页面前在sessionStorage中存放A页面的数据,以及滚动条位置,A页面初始化时判断sessionStorage中的值,有的话就不重新请求服务器,而是现实sessionStorage中的值,并且scrollTo到指定位置。
2、往history中插入#以使返回失效,将详情页B做成div弹层,使用自定义的返回按钮来隐藏详情页。
由于种种原因以上两种方案都不想采用,不知道各位有没有更通用更直接的方法,比如在页面头部添加什么信息通知浏览器别刷新之类。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原页面没有ajax请求的话 直接记录滚动条位置 存入sessionStorage 很简单。
参考 https://segmentfault.com/a/11...
有的话 就得按照你说的第一条来做了
现在微信的内置已经实现了,正常写就可以了~
但有一种情况会使返回失效,当你引用外联脚本的时候就会出现这种问题
之前测试的不全面,iphone手机支持bf-cache,正常情况下没啥问题,为了应对安卓机的这一问题,目前系统采用了sessionstorage,页面增加的工作量及代码还好。但不建议过于复杂的页面这么做,过于复杂的页面建议使用单页面应用的结构,一版会使用swiper+自己写路由。使用angularJs框架应该也是不错的选择。