团队尝试了半天无法定位情况,紧急求救。
个别用户今天集中反馈小程序中异常,定位之后发现是 代码中 wx.redirectTo没有生效 代码如下
最后debug展示 页面深度2 ,跳转url正常无误,并且fail并没有被调起。但事实页面并不跳转var
a=getCurrentPages().length
var
that =
this
this
.setData({ debug: a+
' /pages/runner/runner?raceid='
+ app.raceid})
wx.redirectTo({
url:
'/pages/runner/runner?raceid='
+ app.raceid,
fail:
function
(res){
that.setData({debug:JSON.stringify(res)})
}
})
现在有一个用户反馈机型iphone6s,版本是最新的6.5.8,但同样的版本iOS中我们无法复现,但仍然有其他用户陆续反馈有这个问题。
还请微信团队救命!
再次补充:setTimeout(this.go, 1000) timeout一秒成功, setTimeout(this.go, 500) 半秒就无法跳转了,看来是因为wx.redirect在最近的实现中更依赖某个页面生命周期的数据!但onShow从理论上不应该存在这个问题了!再次请小程序团队尽快查实。
update : 目前可以定位是6.5.8版本,如果昨天用户打开过小程序,微信进程没有结束过,小程序还是一切正常的;如果杀掉了微信进程,就会发生wx.redirectTo()无法吊起的问题。 这里补充现在我们的发现:
wxml里通过bindtap绑定 增加setTimeout() 之后,是可以正常调用的。
我们的程序是在onLoad时候判断是否可以直接跳转页面;改成onShow也是一样。
目前我们采用了setTimeout之后跳转的临时解决方案,但这个不是根本解决的方法!这个问题真实存在,而且影响面很大!随着更多用户的微信进程重启,这样的问题会越来越多!
附上更完整的代码:
// Page(){ onShow: function () { var that = this user_access = wx.getStorageSync( 'user_access_' + app.raceid) this .setData({ debug: JSON.stringify(user_access) + " " + app.raceid }) if (user_access != "" && user_access != undefined) { this .setData({ debug: "go up" }) if ( "status" in user_access) { this .setData({ debug: "redirecting" }) this .go() } } else { this .updatePage() this .setData({ stay: true }) } }, // 根据身份转向不同页面 go: function (){ var that = this this .setData({ debug: '/pages/runner/runner?raceid=' + app.raceid}) wx.redirectTo({ url: '/pages/runner/runner?raceid=' + app.raceid, fail: function (res){ that.setData({debug:JSON.stringify(res)}) } }) }, // ... //} //Page() |