在页面生命周期回调中设置窗口背景色的bug
发布于 5 年前 作者 qma 6520 次浏览 来自 问答

无论是首次进入小程序,还是从其他页面跳转至目标页触发的onShow中,调用wx.setBackgroundColor设置backgroundColorTop都有大概率无效,也不会触发wx.setBackgroundColor的fail回调。

例外的是,如果先将微信切至后台,再切至前台,导致页面触发onShow,就不存在这种问题。

经过测试:

onShow中console.log()表明该生命周期是始终触发的,所以是wx.setBackgroundColor方法的问题。

使用setTimeout延迟调用wx.setBackgroundColor不能解决。

同样的时机,调用wx.setNavigationBarTitle或wx.setNavigationBarColor并没有问题。

看图,注意下拉刷新时的backgroundColorTop

(这里演示的是微信切至后台,再切至前台触发onShow,wx.setBackgroundColor才生效,此图中的导航栏颜色和标题都是在onShow时调用相应方法设置的,唯独wx.setBackgroundColor无效

ps: 我知道可以在json里设置,但需求是这些颜色是可以动态设置的,所以需要使用wx.setBackgroundColor

4 回复

微信:7.0.8 基础库:2.9.4 问题还是同样存在的。请问该问题目前是怎么样的状态呢?有对应问题跟踪系统可以查看最新状态?

试了下加setTimeout后可以了,应该是设置的时候页面还没有渲染好导致的

我也遇到了这样的问题,,,设置backgroundColorTop不生效,backgroundColorBottom是生效的

回到顶部