h5事件监听

2023-10-28

问题:点击div(或弹框)外的任何区域div(或弹框)消失

前情提要:

项目是用angular写的移动端页面,测试反馈点击确认按钮每次都要点击2次才生效,体验很不好,需要优化。页面如下图所示:点击金额输入框键盘出现输入金额,键盘是单独封装的组件,点击页面其他地方键盘消失。

WechatIMG1.jpeg

定位问题:

当测试跟我说的时候,我第一反应是是不是点击有延迟啊,然后我亲自测了一遍,发现有键盘出现的时候需要点2次,没有键盘出现的时候一次就生效了,然后看了代码发现,按照代码逻辑是这样的没错,因为键盘组件中在键盘外absolute了一层透明div(宽高100%),然后当键盘展示的时候点击确认按钮其实点击到的是这层隐形div所以第一次点击其实是关闭键盘,需要再点一次按钮确认按钮才能正常生效。所以问题就是:解决这个点击div其他区域隐藏div的事。

解决问题:

解决这个问题还是很简单的,把之前隐形的绝对定位div去掉,重新写一个方法隐藏键盘就好了,首先想到的肯定是在document上绑定addEventListener监听事件,所以就有以下2个问题需要考虑:(1)什么时候去绑定这个监听事件?

(2)需不需要移除监听事件,什么时候去移除这个监听事件?(因为不移除的话,会造成内存泄漏,可能还会造成其他一些bug)

基于以上2个问题,最先想到的是:在进入组件或者页面的时候添加监听事件,在离开组件的时候移除监听事件,但是这样会有问题:进入页面键盘是默认false不展示的,进入页面就绑定监听点击页面隐藏键盘,这样的话键盘怕是永远都展示不出来了。。。。

然后就想到在键盘展示的时候添加监听,隐藏的时候移除监听,就要用到angular的ngOnChanges生命周期钩子(ngOnChanges具体使用方法在最后有展示):

ngOnChanges (changes: Simple
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

h5事件监听 的相关文章

  • Material 2.0.0-beta.3 md-slider不拖动

    希望这是一个愚蠢的问题 我刚刚在为雇主构建的项目中添加了一个 md slider 因此我没有代码来表示抱歉 我将 MdSliderModule 导入到我正在使用的模块中 在我的模板中我想要的位置添加了标签 它出现了 看起来很棒 但不会拖沓
  • 如何在 Angular2 中隐藏和替换组件

    你好 我有一个父组件 A 它有 2 个子组件 B 和 C 父级A默认显示子组件B 现在 当单击父级A上显示的按钮时 它将用子组件C替换子组件B 在Angular2中单击按钮后 如何用组件C替换组件B 为此 您可以使用 ngIf https
  • Angular2排序数组用于在html中的*ngFor中显示

    我正在循环浏览所有帖子 li 当显示每个帖子的日期时 我会执行以下操作 post date date yyyy MM dd HH mm ss 我想要做的是按最新的第一个顺序显示所有帖子 我尝试过使用类似的管道 li li import Pi
  • Angular 4:如何使用 HTTPClient 读取文本文件的内容

    我的 Angular 4 项目目录中有一个 txt 文件 我想读取其内容 怎么做 下面是我使用的代码 该文件位于 app 文件夹内的 files 文件夹中 我拥有 HTTPClient 代码的组件位于 app 文件夹内的 httpclien
  • 使用 AngularFire 从 Firestore 过滤数据

    我正在尝试使用 Angularfire 的查询集合从 Firestore 过滤数据 https github com angular angularfire2 blob master docs firestore querying coll
  • gyp ERR,Npm 无法获取本地颁发者证书

    我正在致力于 Windows 10 的全新安装 唯一的事情是我安装了 cygwin 以在 cmd 中获取 unix 命令 当我打字时npm install g angular cli它下载了必要的文件 但我收到错误 gyp ERR conf
  • 如何向离子推送通知添加操作按钮?

    我想向离子推送通知添加一些操作按钮 我正在使用科尔多瓦pushv5 通知工作正常 但我不知道如何添加这些按钮 如何添加这些按钮 应在 POST 请求中添加操作按钮 registration ids my device id data tit
  • Angular service-worker范围在安装过程中遇到错误

    我正在尝试使用 Angular Service Worker 但在尝试使用它时出现错误 这些是我的版本 Angular CLI 15 2 0 Node 16 18 1 Package Manager npm 8 19 2 OS linux
  • 将指令外部的值传递给父指令时,“错误:输出未定义”

    我有一个 root app 组件 它在模板中是这样定义的 template
  • 如何在 RxJS 订阅方法中等待

    在 RxJS 主题的订阅回调内部 我想要await on an async功能 下面是打字稿转译器抱怨的代码示例 错误 131 21 TS2304 找不到名称 await async ngOnInit this subscriber dat
  • ngrx 存储是否持久?

    ngrx 存储是否持久 换句话说 我们可以关闭浏览器重新打开它 并检索添加到ngrx 商店 https github com ngrx platform 目前 ngrx store 不支持此类功能 但是您可以通过使用类似的库来维护状态ngr
  • 显示在 Angular 5 中作为 Blob 对象接收的图像

    我正在开发一个 MEAN Stack 应用程序 我想做的是显示存储在数据库中的图像 这样后端就可以工作 但我真正的问题是在前端Angular所以我这样做了 首先从后端接收图像 我做了一个服务来做到这一点 Function to get us
  • 如何测试包含自定义表单控件的组件?

    我有一个这样的组件 Component selector app custom form control templateUrl
  • 如何使用 *ngFor 迭代对象键

    我想在 Angular 2 中使用 ngFor 迭代 object object 问题是该对象不是对象的数组 而是包含更多对象的对象的对象 data id 834 first name GS last name Shahid phone 0
  • Angular2 与 Jquery-ui 滑块

    我尝试将 Jquery ui 滑块与 angular2 一起使用 我想让变量 slideValue 显示滑块的值 但我不知道如何将我的模型或变量从角度绑定到滑块 这是我的滑块组件 import Component ElementRef In
  • 在 Angular 中深度复制对象

    AngularJS 有angular copy 深度复制对象和数组 Angular 也有类似的东西吗 您还可以使用 JSON parse JSON stringify Object 如果它在你的范围内 那么它就存在于每个 Angular 组
  • 在 Angular 9 应用程序的生产中同时使用 AOT 和 JIT

    因此 我一直在构建一个 Angular 9 应用程序 其中有一个客户仪表板来管理保存在服务器上的模板 这些模板可以通过激活系统在不同的设备上查看 因此设备与用户绑定 所以让我们说https templates com我们有 login da
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • 在 Angular 中获取当前路由路径名称的最简单方法是什么?

    我正在寻找一种获取当前路线的路径名称的好方法 这是我能找到的最简单的 this route snapshot firstChild url 0 path 有没有更好的办法 谢谢 谢谢大家的回答 这是我发现我必须做的 router event
  • Angular 2 ngModel 不工作(仅限 javascript)

    所以我是 Angular2 javascript 的新手 我能够通过 5 分钟的 Angular 教程制作一个简单的 Hello world 我对 Angular2 的新变化很好奇 我开始阅读 Angular2 Js 文档 但我发现它不完整

随机推荐

  • C++音视频开发从放弃到入门(基于FFmpeg+OpenCV)

    前言 音视频开发一定要学C 吗 答案是肯定的 虽然其它语言也能搞音视频开发 甚至使用起来更简单 但 语言越高级 离真相就越远 当你的功能需求日益增多 程序的性能需求越来越迫切 你想进一步了解程序实现的细节时 使用其它语言往往会面临 无法解决
  • Pinely Round 2 (Div. 1 + Div. 2) A~D

    A Channel 题意 有n个订阅者 a个初始在线人数 q个上下线情况 问是否一定或有可能所有订阅者都阅读了新的帖子 思路 同时在线人数等于n时 一定都阅读了 输出YES 初始在线人数加上所有的上线人数 所有的 号 大于等于n的话输出MA
  • STL- 常用算法(拷贝和替换,算术生成,集合算法)

    目录 1 常用拷贝和替换算法 1 1copy 容器内指定范围的元素拷贝到另一容器中 1 2replace 将容器内指定范围的旧元素修改为新元素 1 3 replace if 将区间内满足条件的元素 替换成指定元素 1 4 swap 互换两个
  • Docker安装redis集群

    文章目录 1 Redis集群介绍 2 Redis 集群的数据分片 3 Redis 集群的主从复制模型 4 docker搭建Redis集群 3主3从 5 主从容错切换迁移案例 6 主从扩容案例 7 主从缩容案例 1 Redis集群介绍 Red
  • 时序预测

    时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 目录 时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型 GRU模型 PSO GRU模型
  • C++中的静态和动态多态

    之前学过继承 子类继承父类的属性 多态就是基于继承而来的 我们在如果只用继承 那么子类继承父类的各种属性在编译环节 就已经被确认了 导致代码不灵活 如果继承下来的某个子类不支持某种问题的解决 那么父类就需要重新编写代码 这样这个子类ok了
  • (四)为深度伪造预处理数据集

    目录 在Notebook上设置基础 提取视频帧 人脸检测和提取 下载项目文件 75 5 MB 深度伪造 使用深度学习在视频中将一个人的脸换成另一个人的脸 是当今使用人工智能的最有趣和最可怕的方式之一 虽然深度伪造可用于合法目的 但它们也可用
  • Redis新数据类型

    Bitmaps 1 简介 现代计算机用二进制 位 作为信息的基础单位 1个字节等于8位 例如 abc 字符串是由3个字节组成 但实际在计算机存储时将其用二进制表示 abc 分别对应的ASCII码分别是97 98 99 对应的二进制分别是01
  • C++实现简易图书馆管理系统

    目录 一 概要设计 二 详细设计 模块一 管理员模块 一 概要设计 二 详细设计 模块二 借阅者模块 一 概要设计 二 详细设计 模块三 初始界面模块 三 总结 一 概要设计 本程序为图书馆管理系统 按需求 本程序大致分为2个部分 其一是管
  • nodejs:三个点(...)是什么

    参考 JS中三个点 是什么鬼
  • IKE SA和IPSec SA的区别

    刚接触IPSec的时候 一直很奇怪 为什么要做两阶段的协商 先协商出来一个IKE SA 然后再IKE SA的基础上协商出来一个IPSec SA 直接一步到位协商出IPSec SA不是很好吗 但是在实际应用中 直接协商IPSec SA就显得不
  • 人工智能-动物识别系统

    在本系统当中 知识库中的知识用产生式规则来表示 共有如下15条规则 R1 IF该动物有奶THEN该动物是哺乳动物 R2 IF该动物有毛发THEN该动物是哺乳动物 R3 IF该动物有羽毛THEN该动物是鸟 R4 IF该动物会飞AND会下蛋TH
  • 《深入浅出深度学习》之“从逻辑学到认知科学”

    大家应该都听说过 在2016年 Google DeepMind 的AlphaGo 与韩国围棋大师李世石九段进行了著名的人机大战 并且取得完胜 媒体描述AlphaGo的胜利时 都提到了人工智能 Artificial Intelligence
  • MySQL数据库for CentOS7 yum安装、5.7.30编译安装和基础操作

    1 MySQL数据库简介 MySQL 是一种关系数据库管理系统 关系数据库将数据保存在不同的表中 而不是将所有数据放在一个大仓库内 这样就增加了速度并提高了灵活性 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言 关系数据库管
  • 华为手机恢复出厂设置出现com.android.phone,如何在华为手机中恢复出厂设置?怎么在华为手机中一键还原?...

    如何在华为手机中恢复出厂设置 怎么在华为手机中一键还原 许多使用华为手机的小伙伴在使用一段时间手机过后 手机会变得有些卡顿 我们可以将手机恢复出厂设置来缓解手机卡顿的现象 今天 小编就教大家在华为手机中恢复出厂设置 具体如下 1 我们打开手
  • 一文讲完Java常用设计模式(全23种)

    文章目录 介绍 设计模式的六大原则 一 创建型模式 1 单例模式 Singleton Pattern 1 饿汉式 2 懒汉式 双检锁 3 静态内部类 4 枚举 2 原型模式 Prototype Pattern 3 工厂模式 Factory
  • js点击按钮改变文本

    h1 My Web Page h1 p A Paragraph p
  • linux环境下搭建宝塔(一键部署)

    了解宝塔 简单好用的服务器运维面板 宝塔Linux面板是提升运维效率的服务器管理软件 支持一键LAMP LNMP 集群 监控 网站 FTP 数据库 JAVA等100多项服务器管理功能 有30个人的专业团队研发及维护 经过200多个版本的迭代
  • Spring Boot 最核心的 25 个注解

    Spring Boot 最核心的 25 个注解 1 SpringBootApplication 这是 Spring Boot 最最最核心的注解 用在 Spring Boot 主类上 标识这是一个 Spring Boot 应用 用来开启 Sp
  • h5事件监听

    问题 点击div 或弹框 外的任何区域div 或弹框 消失 前情提要 项目是用angular写的移动端页面 测试反馈点击确认按钮每次都要点击2次才生效 体验很不好 需要优化 页面如下图所示 点击金额输入框键盘出现输入金额 键盘是单独封装的组