需求 

当由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;
}); 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐