兼容mac和windows系统的组合快捷键

需求如下:自定义一些快捷键指令,让用户更便捷的操作,例如Ctrl + 1,Ctrl + space等。如何兼容mac跟windows系统呢,因为使用两种系统的用户个人习惯不一样,windows用户是用ctrl键,按键码为17,而mac用户更倾向于使用command键来当做ctrl键,所以我们需要处理一下,首先,我们需要识别用户的系统。

  function getPlatform() {
        var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
        if (isWin) return "Win";
        var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
        if (isMac) return "Mac";
    }

这样我们通过函数的返回值可以识别用户的系统,然后就是根据不同的按键组合来具体区分一下。这里有一个需要注意的地方,有时候,我们可能会这样来判断组合快捷键:

function onkeydown(e){
  
    if(e.keyCode == 17){
           //判断按下ctrl键
        if(e.key == '1'){
           //当做用户按下组合键ctrl+1处理
        } 
    }

}

但,其实这样是错误的,因为你每次只有一个按键事件,不可能同时满足。

正确方法如下:

function onkeydown(e){
   if(e.ctrlKey){
        //是否按下ctrl键
        if(e.key == '1'){
        //按下ctrl+1组合键
        }
   }

}

所以最后我们的代码应该是这样的:

if((platform === 'Win' && e.ctrlKey) || (platform === 'Mac' && e.metaKey)){
            if('1' == e.key) {
            //用户按下ctrl+1键
            }
}

最后解释一下metaKey,如果是windows系统,metaKey代表的是windows键是否按下,如果是mac系统,代表的就是command是否按下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值