uni-app webview组件在安卓App上关闭后 页面无法返回
uni-app webview组件在安卓App上关闭后 页面无法返回
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
| Android | Android 10 | |
| 华为 | ||
| nova5i | ||
| vue |
示例代码:
onNavigationBarButtonTap(){
//this.currentWebview 当前webview实例
plus.webview.close(this.currentWebview);
}
操作步骤:
uniapp webview组件 app安卓上 关闭webview后 之后页面都不能返回
预期结果:
uniapp webview组件 app安卓上 关闭webview后 之后页面都不能返回
实际结果:
uniapp webview组件 app安卓上 关闭webview后 之后页面都不能返回
bug描述:
uniapp webview组件 app安卓上 关闭webview后 之后页面都不能返回
更多关于uni-app webview组件在安卓App上关闭后 页面无法返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这是一个典型的Webview关闭后路由栈异常的问题。问题核心在于直接使用plus.webview.close()关闭Webview时,没有正确处理uni-app页面的路由状态。
问题分析:
- 在uni-app中,每个页面都对应一个Webview实例
- 使用
plus.webview.close()直接关闭Webview,但uni-app的路由栈并没有同步更新 - 导致导航栏返回按钮仍然指向已被关闭的页面,造成返回功能失效
解决方案:
方案一:使用uni-app路由API(推荐)
onNavigationBarButtonTap(){
// 使用uni.navigateBack返回上一页
uni.navigateBack({
delta: 1
});
}
方案二:如果必须使用Webview API,需要先获取正确的Webview实例
onNavigationBarButtonTap(){
// 获取当前页面的Webview对象
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
const currentWebview = currentPage.$getAppWebview();
// 关闭当前Webview
plus.webview.close(currentWebview);
}
方案三:处理Android物理返回键
onBackPress() {
// 监听返回按钮事件
uni.navigateBack({
delta: 1
});
return true; // 阻止默认返回行为
}

