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 回复

请问解决了吗

更多关于uni-app webview组件在安卓App上关闭后 页面无法返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的Webview关闭后路由栈异常的问题。问题核心在于直接使用plus.webview.close()关闭Webview时,没有正确处理uni-app页面的路由状态。

问题分析:

  1. 在uni-app中,每个页面都对应一个Webview实例
  2. 使用plus.webview.close()直接关闭Webview,但uni-app的路由栈并没有同步更新
  3. 导致导航栏返回按钮仍然指向已被关闭的页面,造成返回功能失效

解决方案:

方案一:使用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; // 阻止默认返回行为
}
回到顶部