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

时间:2016-06-07 17:09:43

标签: javascript dom keyboard focus alert

我的webapp已实现键盘快捷键。对于每个键,无论是否按下,我都有一个布尔变量。当出现一些特定的快捷方式时,我会采取一些行动。

问题是,某些操作会导致我的文档失去焦点(例如“打开”对话框,“保存”对话框或简单警告()),而我的webapp无法查明是否已释放密钥。

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以在发送提醒时重置所有按下的键,因为大多数用户在显示提示框时不会按Ctrl键。

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

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

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