美文网首页我爱编程
小程序 wx.getSystemInfoSync 获取 wind

小程序 wx.getSystemInfoSync 获取 wind

作者: codingQi | 来源:发表于2018-04-12 17:20 被阅读0次

一、需求:

小程序本页面是 page 滚动,但引入的弹窗用了<scroll-view/>滚动,为了禁止子组件的滚动会带动父组件的滚动,需要在弹窗出现的时候给父组件页面设置

overflow: hidden;
height: windowHeight(页面可见高度)

但是,Ios手机是正常的,在Android手机测试拿到的可见高度会多一点,导致底部父组件还是会滚动一点点。

二、解决如下:

1. windowHeight 概念

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

2. 存在问题

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

3. 原因

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

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

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

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

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

4. 最终方案

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

代码如下:

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

相关文章

网友评论

    本文标题:小程序 wx.getSystemInfoSync 获取 wind

    本文链接:https://www.haomeiwen.com/subject/kelfkftx.html