如何通过javascript检测输入结束的多字节字符?

时间:2009-05-17 20:04:30

标签: javascript multibyte

目前我在“Enter”键上听取开始发送消息,

但是对于多字节字符,“Enter”键应该选择某个字符。

问题在于我不知道如何检测用户是否正在输入

一个多字节字符,即使他在那个过程中,该消息也会被发送到第一个

按下“Enter”键的时间。

所以用户体验真的很奇怪。

任何人都有解决方案吗?

如果你没有得到我的意思,可以尝试在这里聊天,

一旦开始对话,切换到多字节模式,

那时你会明白我的意思。

链接在这里:

http://maishudi.com/OMegle.php

1 个答案:

答案 0 :(得分:0)

我假设您对多字节输入的引用是对“输入方法”(或Windows上的“输入法编辑器”)的引用。

不幸的是,目前还没有任何真正的解决方案 - DOM3会为此添加机制,但由于复杂性,似乎已经放弃了这一点。

在您考虑浏览器之间的行为差​​异之前,部分复杂性来自于各个输入方法的截然不同的行为。一个很好的例子就是检查您收到的日语,韩语和(传统和简体)中文行为的关键事件。浏览器无法避免这种情况,因为它们正在响应输入编辑器直接触发的事件。

你唯一可以依赖的东西是keyDown事件,即便在opera和firefox中也没那么多 - Safari和IE都在IME组合期间提供keyDown事件,charCode为229,keyUp事件为对应于按下的实际键的charCode。

有一个textInput事件,但只有Safari支持(并且代理Chrome也应支持它),但它并不比标准事件好很多: - /