uni-app 微信小程序上,使用 onResize 监听不到手机底部的虚拟导航栏展开/收起时页面尺寸的变化
uni-app 微信小程序上,使用 onResize 监听不到手机底部的虚拟导航栏展开/收起时页面尺寸的变化
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 1803 | HBuilderX |
产品分类:uniapp/小程序/微信
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:1803
HBuilderX类型:正式
HBuilderX版本号:3.0.7
第三方开发者工具版本号:1.05.2102010
基础库版本号:2.15.0
示例代码:
onResize() {
try {
const res = uni.getSystemInfoSync();
this.windowHeight = res.windowHeight;
} catch (e) {
// error
}
}
操作步骤:
微信小程序,展开/收起 虚拟导航栏
预期结果:
onResize能监听到页面尺寸变化
实际结果:
onResize未触发
bug描述:
微信小程序上,使用 onResize 监听不到手机底部的 虚拟导航栏 展开/收起时页面尺寸的变化
更多关于uni-app 微信小程序上,使用 onResize 监听不到手机底部的虚拟导航栏展开/收起时页面尺寸的变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
单独使用微信小程序(不使用 uni-app 测试一下),如果仍然存在问题,需要反馈到微信社区
更多关于uni-app 微信小程序上,使用 onResize 监听不到手机底部的虚拟导航栏展开/收起时页面尺寸的变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
好的。谢谢。麻烦再问一下,有没有什么方法可以实现在微信小程序,展开虚拟导航的时候,不会把页面往上推啊?就是说,虚拟导航展开的时候,只是盖在上面,不会造成页面尺寸变化
在微信小程序中,虚拟导航栏的展开/收起确实不会触发页面的onResize事件,这是微信小程序本身的限制。目前微信小程序的基础库并未将此场景纳入onResize的触发条件。
针对这个问题,可以考虑以下解决方案:
- 使用wx.onWindowResize替代(仅限微信小程序环境):
wx.onWindowResize((res) => {
this.windowHeight = res.windowHeight;
});
- 在页面onShow生命周期中主动获取窗口尺寸:
onShow() {
const res = uni.getSystemInfoSync();
this.windowHeight = res.windowHeight;
}
- 如果必须监听实时变化,可以设置定时器轮询(性能消耗较大):
mounted() {
this.resizeTimer = setInterval(() => {
const res = uni.getSystemInfoSync();
if(this.windowHeight !== res.windowHeight) {
this.windowHeight = res.windowHeight;
}
}, 300);
},
beforeDestroy() {
clearInterval(this.resizeTimer);
}