收藏
回答

安卓使用wx.getSystemInfoSync()获取windowHeight数值不一致

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.getSystemInfoSync() 微信安卓客户端 8.0.24 2.25.4[808]

使用安卓机器,华为nova5i进行真机调试,在跳转页面时onload()获取可使用窗口高度(windowHeight),有时候数值会不一致。

代码如下:

let systemInfo = wx.getSystemInfoSync()
      this.setData({
        aaa:systemInfo.windowHeight,
        bbb: systemInfo.windowHeight - 80,
      })
      console.log("赋值啦")
      console.log(this.data.aaa)
      console.log(this.data.bbb)

console截图如下:

回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    2022-08-29

    页面是否有自定义 tabbar/自定义导航栏?

    2022-08-29
    有用
    回复 1
    • 灿
      2022-08-30
      没有用到,onload获取的数值就异常
      2022-08-30
      回复
  • 说出你的故事
    说出你的故事
    2023-03-12

    存在问题

    安卓设备下获取 windowHeight 不能准确得到对应的高度,总是拿到屏幕高度

    原因

    1. 同步接口 wx.getSystemInfoSync 并不同步(猜测)

    wx.getSystemInfoSync 只是在页面初始化时提前计算。所以对于 windowHeight 这种需要进行功能判断的属性,应该使用异步接口,实时获取

    2. wx.getSystemInfo 调用的时机不当

    上面讲了 windowHeight 的定义,所以这个值取决于 tabbar 是否存在

    为了保证 tabbar 显示后再进行取值,建议在生命周期的 onReady 钩子中调用接口 wx.getSystemInfo

    最终方案

    1. 采用异步接口 wx.getSystemInfo
    2. 在 onReady 中调用

    代码

      onReady() {
        wx.getSystemInfo({
          success({windowHeight}) {
            // todo
          }
        });
      }
    


    2023-03-12
    有用
    回复
登录 后发表内容