我正在跟踪当前按下了哪些按钮,但是如果有人按下一个按钮,右键单击鼠标(打开上下文菜单),并在上下文菜单打开时释放键,则不会触发keyup事件。这使我的应用程序状态进入不一致状态,我不确定如何从中恢复。 我的代码(简体):
var currently_pressed_buttons = new Set()
function keydown(event){
currently_pressed_buttons.add(event.code)
return false;
}
window.addEventListener("keydown", keydown);
function keyup(event){
currently_pressed_buttons.delete(event.code)
return false;
}
window.addEventListener("keyup", keyup);
我发现只有一个丑陋的解决方法:
function contextmenu(event){
currently_pressed_buttons.clear()
return false;
}
window.addEventListener("contextmenu", contextmenu);
但是,避免这样一个糟糕的解决方案真是太好了……
最好, 西蒙