15 个被合并的 IME 修复:日文输入反复搞坏 Web 应用的那几种方式
来源:dev.to — 2026-10-07
📋 概述
2026 年 6 月底到 7 月初,作者有 15 个 PR 被开源项目合并,修的全是同一类 bug:键盘事件处理器不知道输入法正在组字。文章按反复出现的 bug 类别分组,每一类都给出最小复现和修复模式,并链接到真实的合并 diff。
🔑 核心要点
- 日文输入时按 Enter 确认候选会产生真实的 keydown 事件,只读 event.key === "Enter" 无法区分确认与发送。
- 组字进行中 KeyboardEvent.isComposing 为 true,被输入法处理的按键带有特殊 keyCode 229。
- 标准护栏是 if (event.isComposing || event.keyCode === 229) return。
- 同一个家族的 bug 会在聊天输入框、快捷键和表单里反复出现。
💡 金句
只读 event.key === "Enter" 的代码,分不清「确认这个汉字」和「发送这条消息」。
👍 0
👎 0
← 返回 Dev.to 首页