很多bug在小程序开发者工具上没有问题,但是在真机上就。。。。
比如说经常出现的navigateBack with an unexist webviewId.
这个在iOS系统下发生的很频繁。后来我就去找。
发现是我在我的app.js里面调用了relaunch。然后跳转的页面又redirect下一个页面了。所有页面的判断是在onshow里面做的。
逻辑是没问题的。就是跳转不过去。
解决办法就是加了setTimeout。并且这个定时不能太小,比如说几百毫秒都不行,至少一秒钟才行。我在开发者 论坛上看到有人至少2秒钟。
我就怀疑是跟页面的跳转的层级有关系,你的层级越多,那么定时应该定的越长一点。官方也不推荐在app.js里面用redirectto。然后navigateto有限制是五个层级。relaunch又有点问题。那基本上这几个跳转的API没了。。。。哎。。
我现在很忧桑。--!
抱歉 没太明白
能否写一个流程图?
没人回复吗?我自己顶
2024依然存在
有用,谢谢
顶起来,昨天研究了好长时间,今早上一看你的文档解决了,感谢
mark
现在我强制解决的办法,比较low。就是把两个页面合并了,直接用wx;if 来进行判断了,我就不写什么跳转了,= = 办法有点low。
然后我在小程序论坛上搜到,wx.reLaunch 在onShow或者onLoad里面跳转的时候,容易在真机上出现
navigateBack with an unexist webviewId. 确实,我真机上也出现了,以IOS出现的频率最高, 。 于是我加了setTimeout延时,确实这个情况有改善。但是还是会有这个情况发生。我的代码具体是这么写的:
setTimeout(function() {
wx.redirectTo({
url: '../pay/pay',
success: function () { console.log("navigateTo to pay success") },
fail: function (err) { console.log("navigateTo to pay fail" + JSON.stringify(err)) }
})
}, 1000)
在真机上我console出来,是success的,但是页面木有跳转