关于微信中后退不刷新的问题

关在微信中使用物理按键或者history.back()后退不刷新的问题,是由于微信采用了BF cache机制,用如下代码就可以解决

window.onpageshow = function (event) {
  if (event.persisted) {
    window.location.reload()
  }
}
event.persisted从缓存冲获取时为true否则为false

上述代码在进入页面时,根据event.persisted判断是否主动刷新

以上代码工作良好,但是最近在一个多页面的小项目中出现了问题,表现为event.persisted的值始终返回false,这样代码就完全失效了,然后经过我的排查,发现问题出现在打包时引入react-dom或者styled-components时(暂时只发现这俩包会导致),也就是说这俩包内部有什么代码导致了event.persisted始终返回false,有朋友遇到过这个问题吗?

阅读 3.3k
1 个回答

第一次触发pageshow时,persisted的值一定是false,而在第一次触发pagehide时,persisted就会变成true(除非页面不会保存在bfcache中)。

可参考 https://blog.csdn.net/u010154...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题