系统键(metaKey)会影响浏览器的事件体系

7 阅读1分钟

键盘中 有一类特殊的键叫做metaKey 即系统键
windows系统中 就是 win键
mac系统中 就是command键

按下这些键代表着系统可能会接管接下来的用户事件 从而使浏览器无法正确收集用户事件

在windows系统中 按下win+A/C等系统有响应的键 那么这些键的keydown/keyup不会被浏览器所捕获 而win+space这种系统没有响应的键 其事件则不受影响

而mac系统中 使用command+A进行全选 发现浏览器只捕获了A的keydown事件 没有捕获keyup事件。而在我的代码中 通过监听keydown/keyup这一事件对用来控制系统行为 这就导致mac系统的同事在使用时无法得到正确的结果 只能在全选复制之后再按一下A

解决方法

在keydown事件中 检查e.metaKey属性 如果是true说明这个键是和系统键一起按下的 可能无法正确收集keyup事件 直接return即可