开发过的小程序有一个文本/视频页面,下方有推荐区域,会推荐另一个文本/视频,点击就可以跳转到对应的文本/视频页面。点击推荐,跳转另一页面,再次点击推荐,继续跳转......理论上这是一个可以无限循环的过程,但实际上,当你多跳了几个页面之后,就会碰到"webview count limit exceed"的报错:
Unhandled promise rejection {errMsg: "navigateTo:fail webview count limit exceed"} errMsg: "navigateTo:fail webview count limit exceed"__proto__:
跳转的代码我使用了wx.navigateTo:
goToArticle: function (options) { wx.navigateTo({ url: "/pages/article/page/page" + "?id=" + id }) },
看了一下官方对这个接口的说明:
wx.navigateTo(Object object) 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
小程序页面栈最多只有十层,所以之前设想的无限循环的过程是不可能实现的。虽然在实际应用中,几乎没有人有兴趣点击跳转这么多页面,但为了避免潜在的问题,还是需要解决下这个问题。
解决方法也很简单,用wx.redirectTo替换wx.navigateTo。
我们看下官方对wx.navigateTo的说明:
wx.redirectTo(Object object) 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
因为每次都是关闭当前页面,所以也就不存在页面栈限制的问题。但因为当前页面已经被关闭,所以当你点击回退的时候,只能返回到最外层的页面,而不是真正的上一层页面。
还没有评论,来说两句吧...