小程序 wx.getSystemInfoSync 获取 windowHeight 问题

windowHeight 概念

可使用窗口高度,即:屏幕高度(screenHeight) - 导航(tabbar)高度

存在问题

安卓设备下获取 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
      }
    });
  }
posted @ 2020-04-17 15:21  热爱前端知识  阅读(1792)  评论(0)    收藏  举报
编辑推荐:
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 我最喜欢的 C# 14 新特性
· 程序员究竟要不要写文章
阅读排行:
· 我是不是很有钱?
· 遭遇疯狂 cc 攻击的一个周末
· 【EF Core】聊聊“复合”属性
· 美丽而脆弱的天体运动:当C#遇见宇宙混沌
· GPT‑5 重磅发布
点击右上角即可分享
微信分享提示