一、需求:
小程序本页面是 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
}
});
}
网友评论