Javascript - 像谷歌文档一样检测汉字输入

标签 javascript gwt input user-input cjk

我正在尝试可靠地检测何时将中文字符插入到文本框中。如果我将 keyup、keydown 和 keypress 处理程序添加到输入字段,则当用户从 IME(输入法编辑器)中选择中文字符时不会触发任何事件。例如,在使用简体中文拼音的 Mac/Firefox 上,如果我输入:

然后打1

我只收到“n”的按键事件和“1”的按键事件。没有按键事件被触发。注意:我正在使用 GWT,但我认为这无关紧要。

我很好奇 Google 文档是如何做到这一点的。我特别注意到对于中文,'n' 字符作为文本附加到具有类“docs-texteventtarget-iframe”(但不是'i')的隐藏 iframe。我想他们这样做是为了检测何时插入了汉字。

Google docs怎么知道输入语言变成了中文?例如,如果我的输入语言是英语并且我键入“n”,它不会附加到那个隐藏的 iframe。有没有什么常用的汉字按键事件检测技术?

最佳答案

当用户使用 IME(输入法编辑器)输入文本时,在输入字段的内容发生变化之前,IME 组合窗口中会进行大量交互。您可以通过 compositionstartcompositionend 事件检测到这一点。事实上,在进行组合时,您绝对想从 IME 窃取 keyup/keydows 事件。在文本输入元素上,您可以通过 input 事件捕获内容何时发生变化。

关于Javascript - 像谷歌文档一样检测汉字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8974470/

相关文章:

javascript - 当字符串包含 2 个非连续的正斜杠(负向前瞻)时,正则表达式返回 false

javascript - 将多个库注入(inject) Angular 时出错

java - 使用 Tomcat webapp 访问存储在服务器上的文件

gwt - 正确下沉点击事件

javascript - 如何计算字段加载中的字符数?

c - 使用 fscanf() 读取一行时遇到问题

javascript - 带有点击事件的动画滚动效果

javascript - 无法使用 OrbitControls 选择文本?

java - gwt-maven-plugin javascript编译错误

python - 获取 int 或 str 形式的用户输入