Alt键组合在网页中怎么监听才有效?
我在做一个快捷键功能,想用 Alt + K 触发某个操作,但发现 event.altKey 有时候能识别,有时候完全没反应,特别是在 macOS 上更奇怪。
我试过这样写:
window.addEventListener('keydown', (e) => {
if (e.altKey && e.key === 'k') {
console.log('Alt+K pressed');
}
});
Windows 上偶尔可以,但经常 Alt 一按就激活浏览器菜单栏,根本没法触发 JS。macOS 上 Option 键还会打出特殊字符(比如 ™),导致 key 不是 ‘k’。这到底该怎么处理才靠谱?
首先,针对 Windows 上的问题,你可以尝试使用
e.preventDefault()来阻止默认行为。对于 macOS 上的问题,可以通过监听e.code而不是e.key来解决,因为e.code对应的是物理按键而不是字符。可以优化成这样:
这样改之后应该能更好地处理不同平台上的 Alt 键事件了。希望这能帮到你,不然还得继续调试啊。