H5跳转问题记录

H5跳转问题

1. 问题记录

在嵌入在APP的页面中,出现了H5的多层级跳转返回混乱的问题。我们在页面跳转的时候统一用了window.location.replace这样的本意是在history的栈中,推进了当前栈,history栈的长度+1的。当触发webview的返回事件时,最好是选择history.go()或者history.back()的方法

2. 业务中的使用

如果APP原生没有对返回按钮做处理的话,就相当于浏览器的返回按钮是一样的,我们现有的需求是希望用户点击弹框的关闭按钮,跳转到上一级页面。最初的代码是选择使用window.location.replace的方式,这种方式就使得history栈的长度+1,在回到上一级页面时,再次点击返回,又回到了有弹框的页面,这样就会陷入到死循环。所以,我们在这次关闭弹框时,选择了用history.go(-1)的方式,这样不管用户怎么操作,用户都是从上一级页面进来的,返回的时候也始终是返回到上一级页面。

3. H5中的坑
  • 在嵌入到APP的H5页面中,直接使用history会存在报错的异常,我们最好是选择使用window.history
  • H5页面中的栈溢出,这种情况不确定是不是在所有嵌入到APP H5页面都是这样,在IOS中,如果使用window.location.replace的跳转,会出现栈溢出,超出最大限制的问题,所以,在跳转的事件中,我们统一使用了window.location.href的事件。

这些问题都是在我们H5嵌入到APP中关于history遇到的问题整理

posted @ 2022-03-21 14:50  前端加油站  阅读(725)  评论(0编辑  收藏  举报