如何在使用输入法编辑器时检测用户输入的结束?

时间:2016-06-24 09:09:54

标签: javascript events input keycode ime

对于项目,我在设计模式下使用iframe进行用户输入。由于不同的要求,我需要检测用户输入的结束,以便检索用户输入的文本。

到目前为止,我只是使用一个包含所有按键代码的数组(按键上添加并在按键上删除),一旦数组变空,我就知道输入已完成。在输入之前和之后使用光标偏移我可以检索输入的文本。

但是有些特殊字符和输入法编辑器根据浏览器和操作系统完全模糊了事件模式。

仅举几例:

如果您想使用Chrome在OS X 10.10上键入“â”,那么

  • down 229
  • up 192
  • down 229
  • up 65

在OS X 10.10上更糟糕的是你只需按住“a”键,然后从菜单中选择“â”字符即可。给你

  • down 65
  • 按97
  • 重复下来65
  • up 65
  • down 50
  • up 50

您也可以通过鼠标从菜单中选择“â”,而不会触发任何关键事件。

如果您想在Linux上使用Firefox键入“â”,那么

  • up 0
  • down 65
  • up 65

使用Linux上的Chrome就可以了

  • up 192
  • down 65
  • 按226
  • up 65

如果您想在Windows上使用Firefox键入“â”,那么

  • down 160
  • up 160
  • down 65
  • 按0
  • up 65

使用输入法编辑器会使事情变得更复杂。

如果您想在Linux上使用Chrome和KDE键入十六进制代码“123”(Ctrl + Shift + u 1 2 3后跟一个空格),那么

  • down 17
  • down 16
  • down 229
  • up 85
  • down 229
  • up 49
  • down 229
  • up 50
  • down 229
  • up 51
  • down 229
  • up 32

Windows(Alt + 1 2 3)上的相同内容

  • down 18
  • up 18
  • up 107
  • down 107
  • 按0
  • up 107
  • down 39
  • 按39
  • up 39
  • down 39
  • 按39
  • up 39
  • down 18
  • down 107
  • 按0
  • up 107
  • down 35
  • 按35
  • up 35
  • down 40
  • 按40
  • up 40
  • down 34
  • 按34
  • up 34
  • up 18
  • 按0

这些只是根据浏览器和操作系统,事件如何不同的几个示例。最初我想到了具有特殊含义的密钥代码229并用于这种输入,这也得到了我所做的不同研究的支持。但是在进一步测试期间,从我的示例中可以看出这不是真的,并非所有浏览器都在使用它。

之后我不知道应该如何识别用户输入的开始和结束。我不能使用超时,因为在两者之间可能发生很多事情(例如,用户可能会改变光标位置)。

实际上,我并不关心用户根据事件输入的内容,因为只要我知道开始和结束,我就会从文本中检索它。但是,由于没有明确的“结束键代码序列”或行为,所以最终似乎无法检测到。

有人能指出任何可能让我正确检测用户输入开始和结束的信息吗?

0 个答案:

没有答案