【问题标题】:A simple e.altKey test一个简单的 e.altKey 测试
【发布时间】:2014-08-13 15:57:00
【问题描述】:

总结:

我想赶上Alt + Zonkeypress的事件。我正在使用e.altKey 来完成此操作。 但是,它在任何地方都不起作用,从 textareas 到 inputs 到 div[contenteditable]s!


FIDDLE

Shift + any_key (any_key !== Alt) 的事件工作正常,但根本没有检测到 Alt。我用keydown 测试过,效果很好。


我不知道它是否相关,但ctrl 键在我的小提琴中也不起作用。我已经看到ctrl 键被onkeypress 捕获在这样的各种答案中:https://stackoverflow.com/a/4604093/2675672,但我不知道为什么它在我的小提琴中不起作用。

不工作,我的意思是,即使没有alert 框弹出。

它一定很简单,我可能会忽略。


注意:仅需要 Chrome 支持,无需任何库。另外,我的 Alt 键没有损坏。我可以按 Alt + F 并在 Chrome 中打开文件菜单就好了。

编辑:

因此,我们意识到这是一个Chrome bug,事件不会触发(由@Pointy 注意到)。不过,如果有人有任何解决方法来完成这项工作。请分享它们。谢谢!


更新:已经 3 年了。 Chromium bug 可以花几年时间来修复吗?或者我应该忘记它(我已经忘记了这个问题,只是在维护工作时遇到它)

【问题讨论】:

  • 如果您正确分配事件处理程序,它工作正常jsfiddle.net/CPsRe edit 等待不,这是错误的;无论在 Firefox 中如何,它都能正常工作。 Chrome 就是这里的问题。例如:code.google.com/p/chromium/issues/detail?id=2606
  • @Pointy 感谢您的回复,但还是不行:(
  • 是的,我意识到我错了。 Chrome 只是在键盘事件方面表现不佳(可能还有 Safari;这似乎是一个 WebKit 问题)。

标签: javascript html keyboard key keypress


【解决方案1】:

Onkeypress 不会为所有键触发。

你需要使用onkeydown。

注意:onkeypress 事件并非针对所有键(例如 ALT、CTRL、 SHIFT、ESC)在所有浏览器中。只检测用户是否有 按下一个键,请改用 onkeydown 事件,因为它适用于 所有键。

引用自:http://www.w3schools.com/jsref/event_onkeypress.asp

【讨论】:

  • 如果我按Alt + Z 会怎样?这样,Z 被按下,所以我相信该事件应该触发。另外,为什么Shift 键在编写时不应该起作用? ("所有键(例如 ALT、CTRL、SHIFT、ESC)"?
  • 完全停止使用按键。用keydown做所有事情。这些只是例子,但我不知道为什么会这样。可能在 IE 或其他浏览器中它不起作用。
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 2011-07-08
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多