Javascript 检测Chrome中的Alt键
在我的应用程序中,我需要按Alt键/释放来切换工具提示上的其他信息。然而,第一次按下Alt键时,文档会失去键盘焦点,因为它会进入Chrome的菜单。如果单击文档的任何部分,它将再次工作(一次) 我可以通过调用Javascript 检测Chrome中的Alt键,javascript,google-chrome,keyboard-events,Javascript,Google Chrome,Keyboard Events,在我的应用程序中,我需要按Alt键/释放来切换工具提示上的其他信息。然而,第一次按下Alt键时,文档会失去键盘焦点,因为它会进入Chrome的菜单。如果单击文档的任何部分,它将再次工作(一次) 我可以通过调用preventDefault来避免这种情况,但这也会禁用键盘快捷键,如Alt+Left/Right,这是不可取的 我还可以处理mousemove和检查altKey标志,但当东西只在移动鼠标时更新时,它看起来非常尴尬 在我的情况下,有什么方法可以可靠地检测当前的Alt键状态吗?我真的不想换一把
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");
}
});
左右两侧的键盘值ALT=18 jQuery:
$(document).keyup(function(e){
if(e.which == 18){
alert("Alt key press");
}
});
JavaScript
document.keyup = function(e){
if(e.which == 18){
alert("Alt key press");
}
}
我也遇到了同样的问题,我解决了这个问题:
返回true
恢复Alt+左/右chrome键盘快捷键的正常行为 我知道如何设置事件,但它不起作用。请阅读问题。另外,17是Ctrl,不是Alt。对我来说不起作用。我在Ubuntu 19.04上使用Chrome。
document.addEventListener("keyup", (e) => {
if (e.key === "Alt") {
return true; // Instead of e.preventDefault();
});