uni-app 4.31版本nvue内嵌的webview返回后页面点击无反应
uni-app 4.31版本nvue内嵌的webview返回后页面点击无反应
测试过的手机:
安卓与IOS
示例代码:
<CL-WebH5View
class="webView"
ref="webView"
:url="webUrl"
:isvue3="1"
@onProgress="showPross"
@onMessage="onReceiveH5Message"
@onStart="startLoading"
@onEnd="loadDone"
@onTitle="titleChange"
@onError="loadError" />
操作步骤:
- 进入nvue的weiview页面,然后再次返回
预期结果:
- 返回后的页面正常
实际结果:
- 返回后的页面无法点击
bug描述:
4.31版本nvue内嵌的webview,返回后会导致页面点击无反应。
4.29版本无此次问题
| 项目信息 | 详细信息 |
|----------------|------------------|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.31 |
| 手机系统 | 全部 |
| 页面类型 | nvue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
2 回复
我看压缩包里是个视频演示,你代码里的 cl-webview 是怎么封装的,提供一个单页面源码吗,并说明操作步骤把
在uni-app 4.31版本中,如果在nvue内嵌的webview组件中遇到返回后页面点击无反应的问题,这通常是由于页面渲染或事件绑定未能正确恢复导致的。以下是一个简化的代码示例,展示如何在nvue中使用webview组件,并确保返回后页面能够正常响应点击事件。
首先,确保你的nvue页面结构大致如下:
<template>
<div>
<stack>
<page name="home">
<web-view id="webview" src="https://example.com" @loaded="onWebviewLoaded" @error="onWebviewError"></web-view>
<button @click="goBack">返回</button>
</page>
</stack>
</div>
</template>
<script>
export default {
data() {
return {
canGoBack: false,
};
},
methods: {
onWebviewLoaded() {
// 当webview加载完成时,可以设置一个标志位表示可以返回
this.canGoBack = true;
},
onWebviewError(e) {
console.error('Webview加载错误:', e);
},
goBack() {
const webview = this.$mp.page.selectComponent('#webview');
if (webview && this.canGoBack && webview.canGoBack()) {
webview.goBack();
} else {
// 如果无法后退,则执行其他逻辑,比如关闭当前页面或弹出提示
uni.showToast({
title: '无法后退',
icon: 'none',
});
}
},
},
onUnload() {
// 页面卸载时,可以重置一些状态
this.canGoBack = false;
},
};
</script>
<style>
/* 添加必要的样式 */
</style>
在这个例子中,我们使用了web-view
组件来加载一个外部网页,并通过@loaded
事件监听webview的加载完成状态。一旦加载完成,我们设置canGoBack
为true
,表示此时webview可以执行后退操作。
goBack
方法检查canGoBack
标志位和webview的canGoBack
方法返回值,以确定是否可以执行后退操作。如果不能后退,则显示一个提示。
此外,注意在onUnload
生命周期函数中重置状态,以避免潜在的内存泄漏或状态不一致问题。
如果返回后页面仍然无响应,可能需要检查以下几点:
- 确保返回操作正确执行,没有遗留在某个未正确渲染的状态。
- 检查是否有其他JavaScript错误或冲突影响了页面的正常功能。
- 使用开发者工具调试,查看事件绑定是否正确恢复,以及DOM结构是否如预期。
以上代码提供了一个基本的框架,你可以根据实际情况进行调整和优化。