以前在项目中使用pageshow,发现页面返回的时候persisted依然为false,这时候只好找其余方案解决。 这时候发现有一个window.performance对象,performance.navigation.type是一个无符号短整型javascript
TYPE_NAVIGATE (0):java
当前页面是经过点击连接,书签和表单提交,或者脚本操做,或者在url中直接输入地址,type值为0android
TYPE_RELOAD (1)bash
点击刷新页面按钮或者经过Location.reload()方法显示的页面,type值为1微信
TYPE_BACK_FORWARD (2)markdown
页面经过历史记录和前进后退访问时。type值为2 TYPE_RESERVED (255) 任何其余方式,type值为255async
这真是咱们须要的部分,因而能够预见,解决方案以下:oop
window.addEventListener('pageshow', () => { if (e.persisted || (window.performance && window.performance.navigation.type == 2)) { location.reload() } }, false); 复制代码
引用:stackoverflow.com/questions/1…post
// 解决 Android 返回不刷新 export function androidBackRefresh() { window.history.replaceState(null, '', window.location.href + '&t=' + new Date().getTime()); } // 方法2 window.addEventListener('pageshow', async (event) => { if (event.persisted || window.performance && window.performance['navigation']['type'] == 2) { alert(event.persisted || window.performance && window.performance['navigation']['type']); const { data, logid, msg } = await this.props.backRefresh({ t: new Date().getTime() }); this.setState({ ... }); } }, false); 复制代码