Web浏览器无法捕获Windows键+ D,为什么?
问题描述:
Web浏览器无法捕获Windows快捷键。例如,Windows键+ D显示桌面。Web浏览器无法捕获Windows键+ D,为什么?
但是,在浏览器中,JS只能检测到Windows键的keydown事件,但无法捕获D的键盘事件或windows键的keyup事件。
它背后的深层原因是什么?有没有解释它的文件?
答
不是一个理想的答案,但您可能需要编辑Windows注册表以使其发生。
- 在注册表中禁用Windows + D。 See this answer。
- 使用下面的代码捕获密钥。 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>
答
视窗+ d是由OS捕获,并且不转发给浏览器。可能的解决方法是使用Ctrl + Windows + D来模拟Windows + D。
我认为Windows热键不会转发给浏览器。它将在核心处理 – 2015-02-09 07:06:22
Mac上的Windows Key如何? – Justinas 2015-02-09 07:09:10
Mac上的Windows键是我的命令。 – steviesama 2017-09-05 20:42:36