// 没有任何逻辑代码,就是简单的uni-app中自带的页面跳转
uni.navigateTo()
- 发布:2023-03-30 16:58
- 更新:2024-10-24 19:52
- 阅读:1426
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 12.5.1
HBuilderX类型: 正式
HBuilderX版本号: 3.8.12
手机系统: Android
手机系统版本号: Android 7.1.1
手机厂商: 商米
手机机型: T2
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
从A到B再到C页面
从A到B再到C页面
预期结果:
最后出现全屏的红色C页面
最后出现全屏的红色C页面
实际结果:
最后出现红色C页面和底部48px的蓝色B页面,见附件
最后出现红色C页面和底部48px的蓝色B页面,见附件
bug描述:
demo为3个干净的空页面ABC,背景色分别为黄色、蓝色、红色
在横屏设备上把app设置为霸屏模式(全屏,隐藏底部导航栏(虚拟按键) )后
app启动页为A,点击前往B页面,再点击前往C页面,跳转方式均为:navigateTo。
A和B页面都是满屏的背景色,但是最后C页面的高度并不是屏幕高度,少了48px,下面会多一个48px的高度显示了B页面的底部
我用uni.getWindowInfo分别在3个页面上打印,发现只有A页面的screenHeight和windowHeight是751,B和C页面的都是703,少了48px。
所以猜测是不是dcloud在获取屏幕高度的时候有问题,在全屏的这种情况下
最佳回复
真他妈服了,这bug这么明显,翻了论坛,我翻到20年,20年都有人提出了,现在还没解决,真他妈垃圾,20年的那篇帖子说去掉跳转动画就好了,这也太恶心了,垃圾uniapp,里面解答的就会说 没有设备,没有设备,你他妈随随便便找个设备就能复现
-
麦狐人 (作者)
哈哈 冷静冷静。毕竟免费开源的东西,官方可能没精力管那么多。我是从APICloud转过来的,有点想简单了,大部分是好的,官方能力如何不了解,但是解决问题的速度确实不敢恭维。。
2023-06-25 10:04
retrocode - 现已加入旺旺大礼包全家桶
我给后来者填个坑, 我测试发现出现此类情况都是过早启用霸屏导致的, 如在启动第一个页面/App.vue 的onload中直接启动霸屏导致, 我反复调试后发现, 尽量往后挪延迟启动霸屏, 如给一个 500 毫秒的 settimeout 即可解决此类问题. 时间可以个人自己调试.
猜测是 uniapp 启动时在某处会提前计算 页面高度做类似缓存的操作. 导致后续页面高度全部异常
我一开始都怀疑我样式写的有问题,怀疑自己了,后来一查,真坑,8.9号遇到这破问题,这个低级的重大bug居然不修复
用了楼上的解决方式,勉强解决了
跳转前A页面plus.navigator.showSystemNavigation(),将虚拟按钮显示,重新计算屏幕高度
目标B页面出现后再次隐藏虚拟按钮hideSystemNavigation,就可以了
缺点,跳转时下方有闪烁,勉强接受
解决了没 我也遇到了
-
我这边有一个设备,在安卓系统上设置自动隐藏导航按钮。进入程序之后,我发现用手指从下向上滑动,唤出导航按钮,然后导航按钮会挤压一下页面,然后等导航自动隐藏之后,页面会恢复原状。然后这个程序在关闭之前都不会再出现底部有留白的问题,你看要不要试一下。如果可以的话,我这边的解决方案就是,让程序启动的时候通过代码自动的唤醒导航按钮,然他去挤一下页面。
2024-01-28 17:20
-
回复 2***@qq.com: 我感觉我这边能正常的最终原因,应该是程序启动了之后页面被导航按钮挤过,也就是说程序完全启动之后,会再次去获取视窗的高度。我这边似乎在进入首页之后,再去隐藏导航按钮也能解决这个问题。
2024-01-28 17:34
结合大家上面提供的解决方案,我都一一试过了,还是有问题
1.使用uni.reLaunch()虽然可以满屏,但系统自带的返回键就失效了
2.让程序启动的时候通过代码自动的唤醒导航按钮,然他去挤一下页面,在App.vue里onLaunch方法里调用plus.navigator.showSystemNavigation() //显示系统虚拟按键(导航栏),不起作用
3.uni-app官方真的是很多坑,反馈了还得不到解决,一直拖延
z***@grjjr.com
我的帖子 问啥一直没人回复。。。。
2024-10-31 15:32