【问题标题】:Web browser is not able to capture Windows key + D, why?Web 浏览器无法捕获 Windows 键 + D,为什么?
【发布时间】:2015-04-08 21:04:07
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为 Windows 热键不会转发到浏览器。它将在核心中处理
  • Mac 上的 Windows 键怎么样?
  • Mac 上的 Windows 键是我的命令。

标签: javascript browser keypress windows-key


【解决方案1】:

不是一个理想的答案,但您可能需要编辑 Windows 注册表才能做到这一点。

  1. 在注册表中禁用 Windows+D。 See this answer
  2. 使用以下代码获取密钥。 Source.

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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2010-11-03
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多