关在微信中使用物理按键或者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
,有朋友遇到过这个问题吗?
第一次触发pageshow时,persisted的值一定是false,而在第一次触发pagehide时,persisted就会变成true(除非页面不会保存在bfcache中)。
可参考 https://blog.csdn.net/u010154...