我正在尝试可靠地检测中文字符何时插入到文本框中。如果我将keyup、keydown和keypress处理程序添加到输入字段,则当用户从输入法编辑器(input method editor)选择一个中文字符时,不会触发任何事件。例如,在使用简体中文拼音的Mac/Firefox上,如果我键入:
然后ni打了1
我只收到'n‘的keydown事件和'1’的key up。未触发任何按键事件。注意:我正在使用GWT,但我认为这无关紧要。
我很好奇谷歌文档是如何做到这一点的。我特别注意到,对于中文,'n‘字符作为文本附加到带有"docs-texteventtarget- iframe“类的隐藏iframe中(而不是'i')。我可以想象他们这样做是为了检测何时插入了中文字符。
谷歌文档怎么知道输入语言变成了中文?例如,如果我的输入语言是英语,并且我键入'n',它不会被附加到隐藏的iframe。有没有检测汉字按键事件的常用技术?
发布于 2017-01-27 23:57:31
当用户使用输入法编辑器(Input Method Editor,输入法编辑器)输入文本时,在输入域的内容发生变化之前,输入法合成窗口中会发生大量交互。您可以通过compositionstart和compositionend事件检测到这一点。事实上,当合成正在进行时,您肯定不想从IME窃取keyup/keydows事件。在文本输入元素上,您可以通过input事件捕捉内容何时发生更改。
发布于 2013-04-12 03:40:31
我怀疑你不会得到一个按键事件,因为输入是来自IME而不是键盘,就像你不会得到键事件,如果你粘贴到一个字段中。
您可以尝试将ValueChangeHandler添加到文本框中,以查看是否捕获到您正在查找的事件。
https://stackoverflow.com/questions/8974470
复制相似问题