Web浏览器无法捕获Windows key + D,为什么?

时间:2015-02-09 07:05:04

标签: javascript browser keypress windows-key

Web浏览器无法捕获Windows键快捷方式。例如,Windows键+ D显示桌面。

但是,在浏览器中,JS只能检测Windows键的keydown事件,但无法捕获D的键盘事件或Windows键的键盘事件。

背后的深层原因是什么?有没有解释它的文件?

2 个答案:

答案 0 :(得分:0)

不是一个理想的答案,但您可能需要编辑Windows注册表才能实现此目的。

  1. 在注册表中禁用Windows + D. See this answer
  2. 使用以下代码捕获密钥。 Source
  3. var log = $('#log')[0],
        pressedKeys = [];
    
    var prevKey;
    
    $(document.body).keydown(function (evt) {
        var li = pressedKeys[evt.keyCode];
        if (!li) {
            li = log.appendChild(document.createElement('li'));
            pressedKeys[evt.keyCode] = li;
        }
        $(li).text('Down: ' + evt.keyCode);
        $(li).removeClass('key-up');
        
        if(prevKey){
            if(prevKey === 91 && evt.keyCode === 68){
                evt.stopPropagation();
            }
        }
        
    });
    
    $(document.body).keyup(function (evt) {
        var li = pressedKeys[evt.keyCode];
        if (!li) {
           li = log.appendChild(document.createElement('li'));
        }
        $(li).text('Up: ' + evt.keyCode);
        $(li).addClass('key-up');
    });
    .key-up {
        opacity: 0.5;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul id="log">
        <li>List of keys:</li>
    </ul>

答案 1 :(得分:0)

Windows + D由操作系统捕获,不会转发到浏览器。可能的解决方法是使用Ctrl + Windows + D来模拟Windows + D.