页面js实现快捷键监听

浏览器对键盘事件的监听是KeyBoardEvent事件。该事件的属性如下:

keyBoardEvent事件中,keyCode, keyIdentifier两个实现用于区分按键。 常用的按键的keyCode keyIdentifier如下

    a     U+0041    65     
    b     U+0042    66     
    c     U+0043    67     
    d     U+0044    68     
    e     U+0045    69     
    f     U+0046    70     
    g     U+0047    71     
    h     U+0048    72     
    i     U+0049    73     
    j     U+004A    74     
    k     U+004B    75     
    l     U+004C    76     
    m     U+004D    77     
    n     U+004E    78     
    o     U+004F    79     
    p     U+0050    80     
    q     U+0051    81     
    r     U+0052    82     
    s     U+0053    83     
    t     U+0054    84     
    u     U+0055    85     
    v     U+0056    86     
    w     U+0057    87     
    x     U+0058    88     
    y     U+0059    89     
    z     U+005A    90     
    Esc   U+001B    27    
    F1    F1        112     
    F2    F2        113     
    F3    F3        114     
    F4    F4        115     
    F5    F5        116     
    F6    F6        117     
    F7    F7        118     
    F8    F8        119     
    F9    F9        120     
    F10   F10       121     
    F11   F11       122     
    F12   F12       123  

    Ctrl  Control   17
    Shift Shift     16
    Alt   Alt       18

 

组合键 Ctrl, Shift, Alt三个键可以和其他键一起使用形成组合键。写了个简单的例子用于方便组合键的注册。代码如下。

function compositeKey(k, fn) {
  var k = k || '';
  var fn = fn || function(){};

  var ks = k.split('+');
  if(ks.length < 2) {
    console.info('not composite key');
    return;
  }

  document.addEventListener('keydown', function(e) {
    var ctrl = e.ctrlKey,
        shift = e.shiftKey,
        alt = e.altKey;
    var keyIdent = e.keyIdentifier;

    if(ctrl && (ks.indexOf('ctrl') === -1)) {
      return;
    }

    if(shift && (ks.indexOf('shift') === -1)) {
      return;
    }

    if(alt && (ks.indexOf('alt') === -1)) {
      return;
    }

    if(e.keyCode > 47 && e.keyCode < 91) {
      keyIdent = String.fromCharCode(e.keyCode);
    }

    if(keyIdent.toLowerCase() === ks[ks.length-1]) {
      fn(e);
    }
  });
}

// 调用例子
compositeKey('ctrl+alt+w', function(e){console.log(e)});

 

转载于:https://www.cnblogs.com/c-hao/p/3656914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值