在聚焦元素上按下转义键时,不会引发键事件

Gqq*_*big 9 javascript google-chrome

我想知道何时Esc按下输入元素上的键.在Chrome 47.0.2526.106米,Esc键删除焦点,但JavaScript不能赶上keyup,keydownkeypress事件.

演示:https://jsfiddle.net/gstvj9uq/

$("input").keydown(function() {
  alert('keydown');
});

$("input").keyup(function() {
  alert('keyup');
});

$("input").keypress(function() {
  alert('keypress');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一个解决方案来捕获输入上的Escape键向下/向上/按下事件吗?然而,IE 10可以捕获该事件.

小智 32

有同样的问题,原来是vimium延伸.没有它,在按下逃生时不会失去焦点.

请注意,keypress事件永远不会被触发转义,只有keydown和keyup

  • 您的“请注意,按键事件永远不会因转义而触发,只有 keydown 和 keyup”本身就足够重要,可以作为答案。感谢您的补充! (4认同)
  • 哇,我花了几个小时试图找出问题所在。感谢那!+1 +1 +1 (3认同)
  • 这可能只是我的应用程序(React/Material UI)的问题,但我只能使用“keyup”捕获 Escape,它不会因“keydown”而触发。尝试了不同的浏览器/操作系统,没有安装扩展,唯一的解决方法是切换事件类型。 (3认同)
  • 我知道我不应该使用注释来写这样的东西,但是:谢谢!+ 1 + 1 + 1。是的,不可思议的收获。 (2认同)
  • 太神奇了。我刚刚发现 vimium 对这种情况有一个技巧:https://github.com/philc/vimium/wiki/Tips-and-Tricks#using-the-escape-key-in-inputs。 (2认同)
  • 这个答案的第二段完全不同 (2认同)