uni-app 预览图片时发生路由跳转图片不消失且覆盖当前页面
uni-app 预览图片时发生路由跳转图片不消失且覆盖当前页面
测试过的手机
- iphoneX
- 红米note7
- 小米10
操作步骤:
- h5正常,仅app有bug,运行到app点击图片即可查看效果
预期结果:
- 页面跳转并且正常显示
实际结果:
- 页面跳转,但是不正常显示,被预览视图遮挡
bug描述:
- 页面成功跳转,但是会被预览图片这个view遮挡
附件
| 信息类别 | 内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Mac |
| PC开发环境操作系统版本号 | macOS Big Sur 11.1 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.22 |
| 手机系统 | 全部 |
| 手机厂商 | 华为 |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 预览图片时发生路由跳转图片不消失且覆盖当前页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html
6 回复
好的
请问有结果了吗?是bug吗或是有别的方式能处理吗,我的场景是会浏览器打开app,但是有可能用户正在预览图片中,就会出现这种情况
回复 jjhjiyu: 预览是跳转到独立视图窗口 所以会遮挡你跳转的页面 不是bug设计如此
回复 DCloud_Android_ST: 那是不是也得提供个方法出来,让我关闭这个独立视图窗口?
这是一个已知的uni-app App端预览图片组件的兼容性问题。在nvue页面中,uni.previewImage接口创建的预览层属于原生视图,其层级高于页面路由的WebView容器。当预览图片未完全关闭时进行页面跳转,预览层会持续覆盖在新的页面上。
建议的解决方案:
- 在调用页面跳转前,先强制关闭图片预览
// 在跳转前执行
uni.hideKeyboard(); // 同时隐藏键盘
setTimeout(() => {
uni.navigateTo({
url: '/pages/target/target'
});
}, 50);
- 或者使用条件渲染控制预览组件
// 自定义预览组件时
<image-preview v-if="showPreview" @close="showPreview = false" />
- 在页面的onHide生命周期中主动关闭预览
onHide() {
// 执行关闭预览的逻辑
}

