当前位置: 首页 > news >正文

web前端之中文输入法导致的高频事件、addEventListener、compositionstart、compositionend

MENU

  • 代码
  • compositionend
  • compositionstart
  • addEventListener


代码

html

<input type="text" />

JavaScript

var inp = document.querySelector('input');
let isComposing = false;function search() {if (isComposing) return false;console.log('搜索: ', inp.value);
}inp.addEventListener('input', function () {search();
});inp.addEventListener('compositionstart', function () {isComposing = true;
});inp.addEventListener('compositionend', function () {isComposing = false;search();
});

compositionend

MDN

当文本段落的组成完成或取消时,compositionend事件将被触发(具有特殊字符的触发,需要一系列键和其他输入,如语音识别或移动中的字词建议)。


compositionstart

MDN

文本合成系统如input method editor(即输入法编辑器)开始新的输入合成时会触发compositionstart事件。


addEventListener

w3school
定义

addEventListener()方法将事件处理程序附加到元素。

参数描述
type必需。事件的名称。请不要使用 “on” 前缀。请使用 “click” 而不是 “onclick”。DOM事件的完整列表
function必需。事件发生时运行的函数。
useCapture可选(default = false)。1.处理程序在冒泡阶段执行。2.处理程序在捕获阶段执行。

技术细节

该方法将把指定的事件监听器函数添加到当前节点的监听器集合中,以处理指定类型type的事件。如果useCapturetrue,则监听器被注册为捕捉事件监听器。如果useCapturefalse,它被注册为普通事件监听器。
addEventListener()可能被调用多次,在同一个节点上为同一种类型的事件注册多个事件句柄。但要注意,DOM不能确定多个事件句柄被调用的顺序。
如果一个事件监听器函数在同一个节点上用相同的typeuseCapture参数注册了两次,那么第二次注册将被忽略。如果正在处理一个节点上的事件时,在这个节点上注册了一个新的事件监听器,则不会为那个事件调用新的事件监听器。
当用Node.cloneNode()方法或Document.importNode()方法复制一个Document节点时,不会复制为原始节点注册的事件监听器。
这个方法也在Document和Window对象上定义了,而且工作方式类似。

相关文章:

  • HPM6750系列--第九篇 GPIO详解(基本操作)
  • Github与Gitlab
  • CentOS 7 部署 dnsmasq
  • jpa 修改信息拦截
  • 信息学奥赛一本通 第二章 顺序结构程序设计 第一、二节C语言非C++
  • 【网络编程】-- 04 UDP
  • Windows mysql5.7 执行查询/开启/测试binlog---简易记录
  • 阿木实验室普罗米修斯项目环境配置
  • Centos7部署SVN
  • 基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(六)
  • 通过css3的锚定滚动属性,实现分页加载时让滚动条不闪动
  • 【Spring Boot】快速入门
  • Modbus转Profinet网关使用方法
  • 100天精通风控建模(原理+Python实现)——第10天:风控建模中主成分析是什么?怎么实现?
  • 2023-12-14 二叉树的最大深度和二叉树的最小深度以及完全二叉树的节点个数
  • 网络传输文件的问题
  • [nginx文档翻译系列] 控制nginx
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • android图片蒙层
  • Git 使用集
  • JavaScript学习总结——原型
  • Linux后台研发超实用命令总结
  • MobX
  • quasar-framework cnodejs社区
  • ucore操作系统实验笔记 - 重新理解中断
  • windows-nginx-https-本地配置
  • 缓存与缓冲
  • 类orAPI - 收藏集 - 掘金
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • HanLP分词命名实体提取详解
  • ​iOS实时查看App运行日志
  • ​ssh免密码登录设置及问题总结
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C#)获取字符编码的类
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (九)One-Wire总线-DS18B20
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)认识微服务
  • (转)Linux下编译安装log4cxx
  • (转)大道至简,职场上做人做事做管理
  • ***监测系统的构建(chkrootkit )
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net快速开发框架源码分享
  • .NET企业级应用架构设计系列之应用服务器
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504