在我的应用程序中,我需要处理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");
}
});
答案 0 :(得分:1)
我有同样的问题,我解决了这个answer:
document.addEventListener("keyup", (e) => {
if (e.key === "Alt") {
return true; // Instead of e.preventDefault();
});
return true
恢复 Alt + 左 / 右镀铬键盘快捷键的正常行为。
答案 1 :(得分:0)
<强> jQuery的:强>
$(document).keyup(function(e){
if(e.which == 17){
alert("Alt key press");
}
});
<强>的JavaScript 强>
document.keyup = function(e){
if(e.which == 17){
alert("Alt key press");
}
}