【发布时间】:2020-03-04 22:49:25
【问题描述】:
在我的应用程序中,我需要处理 Alt 键按下/释放以切换有关工具提示的其他信息。但是,第一次按下 Alt 时,文档会失去键盘焦点,因为它会转到 Chrome 的菜单。如果我单击文档的任何部分,它会再次工作(一次)。
我可以通过调用preventDefault 来避免这种情况,但这也会禁用诸如 Alt+Left/Right 之类的键盘快捷键,这是不可取的。
我也可以处理mousemove 和检查altKey 标志,但是当只有在鼠标移动时才更新时看起来很尴尬。
在我的情况下,有什么方法可以可靠地检测当前的 Alt 键状态吗?我真的不想切换到不同的键。
更新:我想最好的解决方案是仅在工具提示处于活动状态时调用preventDefault。
document.addEventListener("keydown", (e) => {
if (this.curComponent) e.preventDefault();
if (e.which === 18) {
this.outer.classList.add("AltKey");
}
});
document.addEventListener("keyup", (e) => {
if (this.curComponent) e.preventDefault();
if (e.which === 18) {
this.outer.classList.remove("AltKey");
}
});
【问题讨论】:
标签: javascript google-chrome keyboard-events