WebView.destroy() called while still attached 的解决办法

本文详细介绍了如何正确地从父组件中移除并销毁WebView。首先需要从父组件中移除WebView,然后调用removeAllViews()方法,最后调用destroy()方法来彻底销毁WebView,避免内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以现在webView的父组件中删除该webview,然后再Destroy

parent.removeView(webView);

然后

webView.removeAllViews();

webView.destroy();

### 微信小程序 `common` 目录下 `webview.js`、`webview.json` 和 `webview.wxml` 文件的作用 #### 1. `webview.wxml` `webview.wxml` 是微信小程序中用于定义页面结构的文件。在这个文件中,主要负责展示 WebView 组件的内容。根据已知的信息,`webview.wxml` 的核心作用是嵌入 `<web-view>` 组件,并通过绑定动态 URL 来加载外部网页内容[^2]。 以下是典型的 `webview.wxml` 结构示例: ```xml <view class="container"> <web-view src="{{sitURL}}"></web-view> </view> ``` 在此代码片段中,`{{sitURL}}` 表示从 `webview.js` 或其他上下文中传递过来的动态 URL 值,这使得开发者能够灵活地控制加载的具体网页地址。 --- #### 2. `webview.js` `webview.js` 是逻辑层脚本文件,主要用于处理与业务逻辑相关的交互行为。它的职责包括但不限于以下几个方面: - **初始化数据**:为 `webview.wxml` 提供初始数据,例如设置 `sitURL` 属性的值。 - **事件监听**:捕获来自 Web 页面或小程序内部触发的事件,从而实现双向通信功能[^1]。 - **生命周期管理**:在页面的不同阶段执行相应的操作,如加载完成后的回调函数。 下面是一个简单的 `webview.js` 实现例子: ```javascript Page({ data: { sitURL: '' // 初始化为空字符串 }, onLoad(options) { const url = options.url || ''; // 获取传入的 URL 参数 this.setData({ sitURL: decodeURIComponent(url) }); // 设置到视图层 } }); ``` 这里展示了如何接收从前端页面传递来的查询参数(即 `options.url`),并通过调用 `this.setData()` 方法更新视图上的 `sitURL` 字段。 --- #### 3. `webview.json` `webview.json` 配置文件用来指定当前页面的一些全局属性和权限设定。虽然它不像 `.js` 和 `.wxml` 那样直接参与运行时的行为表现,但它仍然扮演着非常重要的角色。常见的配置项有以下几种: - **窗口样式**:决定导航条文字颜色 (`navigationBarTextStyle`)、背景色 (`navigationBarBackgroundColor`) 等外观细节[^3]。 - **性能优化开关**:启用/禁用某些特定功能以提升用户体验效果。 - **第三方插件声明**:当项目依赖于额外的服务提供商时需在这里注册相关信息。 一个基础版本的 `webview.json` 可能如下所示: ```json { "usingComponents": {}, "window": { "backgroundColor": "#ffffff", "navigationBarTitleText": "Web View Page" } } ``` 这段 JSON 数据明确了新打开的 WebView 页面应该具备什么样的顶部栏显示风格——白色底板搭配黑色字体标题“Web View Page”。 --- ### 总结 综上所述,在微信小程序开发过程中,“common”目录下的这三个文件各自承担不同的使命却紧密协作共同构建起完整的 H5 浏览器容器解决方案。其中 `webview.wxml` 主要关注 UI 渲染层面的工作;而 `webview.js` 则侧重于算法计算以及状态维护等方面的任务分配;至于最后提到的那个小小的 `webview.json` 文档呢,则是从宏观角度出发给予整个模块必要的指导方针以便更好地融入整体框架体系之中[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪 www.enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值