微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理

实现效果:微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理
首先在web-view里是不可实现的(据我了解下来)
参考小程序文档:page-container

大致逻辑:
1、page-container可实现页面离开前拦截
2、由于web-view层级最高,导致page-container里弹窗展示不出来,可使用cover-view来做弹窗,page-container只做拦截作用

index.wxml:

<!-- page.wxml -->
<web-view src="https://www.baidu.com"/>
<page-containershow="{{showBackConfirm}}"bindbeforeleave="handleBackAttempt"bind:afterleave="resetInterceptor" 
>
</page-container>
<cover-view wx:if="{{isIntercepting}}" class="evaluate"><cover-view class="content"><cover-view>您觉得本次服务怎么样?</cover-view><cover-view class="star-list"><cover-image class="star" src="/assets/collect-block.png"></cover-image><cover-image class="star" src="/assets/collect-block.png"></cover-image><cover-image class="star" src="/assets/collect-block.png"></cover-image><cover-image class="star" src="/assets/collect-block.png"></cover-image><cover-image class="star" src="/assets/collect-block.png"></cover-image></cover-view><cover-view class="btns"><button bind:tap="cancelBack">取消</button><button bind:tap="confirmBack">已评价</button></cover-view></cover-view>
</cover-view>

index.js:

Page({data: {showBackConfirm: true,isIntercepting: false // 状态锁,防止重复触发},// ✅ 核心拦截函数(修正导航栏返回不生效问题)handleBackAttempt() {if (!this.data.isIntercepting) {this.setData({showBackConfirm: true,isIntercepting: true // 加锁}, () => {// 确保弹窗渲染完成wx.nextTick(() => {return false; // 必须返回 false 才能拦截});});}return false; // 双重保险},// ✅ 用户确认返回confirmBack() {this.setData({showBackConfirm: false}, () => {setTimeout(() => wx.navigateBack(), 50); // 确保弹窗关闭后再返回});},// ✅ 用户取消返回cancelBack() {this.setData({showBackConfirm: true,isIntercepting: false // 解锁});},// ✅ Android 物理返回键专项处理onBackPress() {if (!this.data.isIntercepting) {this.setData({showBackConfirm: true});return true; // 必须返回 true 才能拦截}return false;},// ✅ 阻止 iOS 右滑穿透(关键!)preventSwipe() {return; // 空函数阻止默认滑动},// ✅ 重置拦截状态resetInterceptor() {this.setData({isIntercepting: false});}
})

代码片段:https://developers.weixin.qq.com/s/As1z2uma8Q0i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式25——中介者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 中介者模式&#xff08;Mediat…

Java基础 Day25

一、线程通信 1、简介 确保线程能够按照预定的顺序执行并且能够安全地访问共享资源 使多条线程更好的进行协同工作 2、常用方法 void wait() 使当前线程进入等待状态 void notify(); 随机唤醒单个等待的线程&#xff08;可以空唤醒&#xff09; void notifyAll(); 唤醒…

WebSocket与实时对话式AI服务的集成

WebSocket与实时对话式AI服务的集成 在现代对话式AI系统中,传统的HTTP请求-响应模型已难以满足实时交互的体验需求。特别是用户对响应速度、逐字输出、会话上下文保持等方面提出更高要求时,需要一种能够建立持久连接并支持双向通信的协议。WebSocket正是在这一背景下,成为A…

iOS 集成网易云信IM

云信官方文档在这 看官方文档的时候&#xff0c;版本选择最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加头文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…

人工智能100问☞第37问:什么是扩散模型?

目录 ​​一、通俗解释 二、专业解析​​ 三、权威参考 扩散模型是一种​​通过系统性地添加再去除噪声来生成新数据(如图像)的生成式AI技术​​,其核心机制分为两个阶段:正向扩散​​:对原始数据(如清晰图片)逐步添加噪声,直至完全变成随机噪点(类似老照片逐渐模糊…

传输层核心技术解析

目录 一、端口号机制 二、网络诊断工具 1. netstat命令 2. pidof工具 三、UDP协议详解 协议特征 典型应用场景 四、TCP协议深度解析 核心机制 状态转换模型 特殊状态说明 五、协议对比分析 六、开发实践要点 一、端口号机制 核心作用&#xff1a;标识主机唯一进程…

IO Vs NIO

一、IO(传统阻塞式) 全称‌&#xff1a;Input/Output(输入/输出) 定义‌&#xff1a;Java 1.0 引入的基础 I/O 模型&#xff0c;基于流&#xff08;Stream&#xff09;的同步阻塞操作&#xff0c;线程在读写数据时会阻塞直到操作完成。 二、NIO(新式非阻塞式) ‌全…

基于原生JavaScript前端和 Flask 后端的Todo 应用

Demo地址&#xff1a;https://gitcode.com/rmbnetlife/todo-app-js-flask.git Python Todo 应用 这是一个使用Python Flask框架开发的简单待办事项(Todo)应用&#xff0c;采用前后端分离架构。本项目实现了待办事项的添加、删除、状态切换等基本功能&#xff0c;并提供了直观…

005 ElasticSearch 许可证过期问题

ElasticSearch 许可证过期问题 项目启动报错 org.elasticsearch.client.ResponseException: method [GET], host [http://127.0.0.1:9200], URI [/_cluster/health/], status line [HTTP/1.1 403 Forbidden] {"error":{"root_cause":[{"type":…

哪些岗位最易被AI替代?

随着AI技术高速演进&#xff0c;一场“职场大洗牌”正悄然上演。当ChatGPT出口成章、机器人能精准执勤&#xff0c;AI时代的“就业焦虑”已不再是空谈。你是否认真思考过&#xff0c;自己所处的岗位是否也正面临被AI边缘化的风险&#xff1f; 以下几类职业&#xff0c;已成为AI…

信号槽中 sender() 的作用

好的,sender() 是 Qt 框架中的一个重要函数,它用于获取触发当前槽函数的对象。在 Qt 的信号和槽机制中,一个信号可以连接到多个槽函数,而一个槽函数也可以被多个信号触发。sender() 函数允许你在槽函数中确定是哪个对象触发了当前信号。 信号和槽机制 在 Qt 中,信号和槽…

深度学习|pytorch基本运算

【1】引言 pytorch是深度学习常用的包&#xff0c;顾名思义&#xff0c;就是python适用的torch包&#xff0c;在python里面使用时直接import torch就可以调用。 需要注意的是&#xff0c;pytorch包与电脑配置、python版本有很大关系&#xff0c;一定要仔细阅读安装要求、找到…

DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态

目录 一、引言二、DeepSeek 技术探秘2.1 DeepSeek 技术原理剖析2.2 DeepSeek 与其他大模型对比优势 三、数字人直播带货现状洞察3.1 数字人直播带货发展历程回顾3.2 市场规模与增长趋势分析3.3 现存问题与挑战探讨 四、DeepSeek 在数字人直播带货中的应用实例4.1 交个朋友的成功…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.11 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.11 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( densityc(570,565,…

四、关系数据库标准语言SQL_1

四、关系数据库标准语言SQL_1 主要内容 4.1 SQL概述 SQL简介 4.2 SOL的系统结构4.3 SQL数据定义 SQL的数据定义 4.5 SQL数据查询4.6 SQL数据更新4.7 SQL中的视图4.8 SQL的数据控制4.9 嵌入式SQL小结 4.1 SQL概述 主要内容 SQL简介SQL的特点SQL的系统结构 SQL简介 SQL&…

vscode的Embedded IDE创建keil项目找不到源函数或者无法跳转

创建完Embedded IDE项目后跳转索引很容易找不到源函数或者无法跳转&#xff0c;原因是vscode工作区被eide覆盖了&#xff0c;需要手动往当前目录下的.vscode/c_cpp_properties.json里添加路径 打开eide.json &#xff0c;找到folders&#xff0c; 里面的name是keil里工程的虚拟…

【Docker管理工具】部署Docker管理面板DweebUI

【Docker管理工具】部署Docker管理面板DweebUI 一、DweebUI介绍1.1 DweebUI 简介1.2 主要特点1.3 使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载DweebUI镜像五、…

CentOS7.9环境离线部署docker和docker-compose的两种方式

目 录 一、yum安装&#xff0c;使用rpm安装包和相关依赖 1.1 准备rpm安装包 1.2 将docker-23.0.4.tar.gz上传至/opt目录下 二、二进制文件方式安装 三、安装docker-compose 一、yum安装&#xff0c;使用rpm安装包和相关依赖 1.1 准备rpm安装包 1&#xff09;在一台与…

AI赋能SEO关键词策略

内容概要 当前搜索引擎优化领域正经历由人工智能驱动的范式革新。传统关键词研究依赖人工统计与经验判断&#xff0c;而AI技术通过多维数据建模与自然语言处理&#xff0c;实现了从用户行为分析到语义关联挖掘的系统升级。具体而言&#xff0c;智能语义解析技术可穿透表层搜索…

MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束|文献速递-深度学习医疗AI最新文献

Title 题目 MonoPCC: Photometric-invariant cycle constraint for monocular depth estimation of endoscopic images MonoPCC&#xff1a;用于内窥镜图像单目深度估计的光度不变循环约束 01 文献速递介绍 单目内窥镜是胃肠诊断和手术的关键医学成像工具&#xff0c;但其…