失去焦点时处理键盘事件的最佳方法



我的网络应用程序已经实现了键盘快捷键。对于每个键,我都有一个布尔变量是否按下。当出现一些特定的快捷方式时,我会执行一些操作。

问题是,某些操作使我的文档失去焦点(例如打开对话框,保存对话框或简单的alert()),并且我的Web应用程序没有机会找出是否释放了键。

即使在 alert() 期间,是否有可能继续获取键盘事件?我知道当出现一些快捷方式时,我可以将所有键设置为 False。还有比这更优雅的吗?

if(ctrlDown && mDown) alert("...");

请参阅此处:https://jsfiddle.net/fvqhbLa1/1/文档显示是否按下了 Ctrl、M、B。但是当你按Ctrl和M时,会有警报,关闭它后,文档仍然认为Ctrl和M被按下了。现在你可以按 Ctrl,它会在不按 M 的情况下触发 alert()。

您可以在

发送警报时重置所有按下的键,因为大多数用户在显示警报框时不会按 Ctrl。

您还可以使用 'e.shiftKey'、'e.ctrlKey' 和 'e.altKey' 属性检查 shift、ctrl 和 alt 键是否关闭。

alert("Ctrl + M pressed!");
ctrlDown = bDown = mDown = false;

https://jsfiddle.net/fvqhbLa1/3/

相关内容

最新更新