写在前面, 由于小程序的左上角返回按钮事件,没有能直接用的方案(ps:我在官方文档上以及官方社区上没找到,望找到的大神告知,不胜感谢), 只能在事件逻辑上拦截,但是会产生一个体验度不好的缺陷
缺陷
是会在跳转目标页的时候,会有一个跳转到祖级页面,祖级页面又跳回父级页面的bug!!! 看上去就觉得在乱跳页面
场景
页面栈: 活动列表页 => 活动详情页 => 活动参加发布页
前提: A 在活动详情页跳转发布页,关闭活动详情页, 进入(新开的页面)发布页
- 发布页(当前页面)是存在交互接口,点击发布按钮,关闭当前页,新开页面跳转到名义上的父级页面(活动详情页),这一步没有问题
- 如果用户在发布页(当前页面),没有啥上传或输入的操作,直接点击左上角的返回按钮返回,由于父页面(活动详情页)已关掉,就会直接跳到祖页面(活动列表页),这体验就相当的差了
前提:B 在父级页面跳转子页面时,不关闭父级页面
1.同场景A的第一步,但是在父级页面再点击左上角的返回按钮时 ,就会出现两个看上去一样的页面- 在当前页面啥操作没有直接点击左上角的返回按钮,这一步没有问题
通过场景复现可以看出,由于小程序没有直接的控制左上角的返回按钮事件,只能进行事件逻辑模拟操作
有下面的两个思路
- 还是关闭活动详情页,新开页面进行操作
- 在发布页设置一个是否通过onUnload进行跳转的变量
isSkipByOnUnload:true
- 在发布页点发布按钮之后,跳转时,也新开页面跳转到名义上的父级页面(活动详情页),同时设置
isSkipByOnUnload
为false,就可以避开onUnload的跳转事件 - 在无操作点击返回时, 这时
isSkipByOnUnload
为true, 在onUnload中新开页面返回名义上的父级页面(活动详情页),看上去的乱跳页面就是在这里产生的,(实际上会先跳回活动列表页再跳回活动详情页)
页面栈中两个相同页面的问题解决了,新的问题又出现了,还未找到新的解决方案,暂时记录下,做备用方案