解决ios history.back()返回不刷新
需求当由A页面跳转到B页面,将B页面的字段保存至localstorage中。返回A页面时,需要将B页面的某些字段从localstorage取出进行渲染。B页面返回A页面时,我用的是history.back(),由于ios和安卓机制不同,安卓会重新刷新主页面的ready, ios则不会。解决方法①window.location.href=“pageA.html”这是我们最容易想到的解决办法,但是存在
·
需求
当由A页面跳转到B页面, 将B页面的字段保存至localstorage中。返回A页面时,需要将B页面的某些字段从localstorage取出进行渲染。
B页面返回A页面时,我用的是history.back(),由于ios和安卓机制不同,安卓会重新刷新主页面的ready, ios则不会。
解决方法
①window.location.href=“pageA.html”
这是我们最容易想到的解决办法,但是存在问题。
pageA.html-->pageB.html-->pageC.html-->pageD.html,几个页面依次跳转,当在D页面使用window.location.href=“pageC.html”成功返回C页面时,对于C页面来说B不再是它的上一级页面了,上一级页面变成了D,此时在C页面使用history.back()就会跳转到D页面。
② onpageshow、onpagehide事件
经过实践,只需要将事件监听放置返回的页面(A页面)即可解决问题。
var isPageHide = false;
window.addEventListener('pageshow', function () {
console.log('pageshow')
if (isPageHide) {
window.location.reload();
}
});
window.addEventListener('pagehide', function () {
console.log('pagehide')
isPageHide = true;
});
更多推荐
已为社区贡献1条内容
所有评论(0)