Alt键在macOS下触发事件时为何被浏览器拦截?
我正在给导航菜单添加键盘交互,用Alt键+方向键展开子菜单。但发现macOS的Chrome里Alt键完全没反应,换成Ctrl键就正常了,这是为啥?
我试过在事件监听器里用event.preventDefault(),但没效果。代码是这样写的:
document.addEventListener('keydown', (e) => {
if (e.altKey && e.key === 'ArrowDown') {
console.log('Alt+下箭头被按下');
}
});
其他键组合都能触发console.log,唯独Alt键在macOS下完全没响应,Windows系统却能正常工作…
e.key === 'Alt'监听单独的Alt键触发,或者换成Option键组合,代码得这么写:另外记得在mac上测试时别用Chrome的开发者工具遮挡页面,有时候焦点丢了也不触发。
preventDefault()对这种系统保留的按键无效。你如果想实现类似功能,建议换个组合键,比如Ctrl+方向键或者Shift+方向键。如果你非要坚持用Alt键,可以试试这样绕过限制:
复制过去试试,不行就乖乖换组合键吧,毕竟用户体验比强行用Alt更重要。