Веб-браузер не может захватить ключ Windows + D, почему?
Веб-браузеры не в состоянии захватить комбинацию клавиш Windows. Например, клавиша Windows + D отображает рабочий стол.
Однако в браузере JS может только обнаружить событие нажатия клавиши Windows, но не может захватить событие клавиатуры D или событие нажатия клавиши Windows.
В чем глубокая причина этого? Есть ли документ, объясняющий это?
2 ответа
Не идеальный ответ, но вам может потребоваться изменить реестр Windows, чтобы это произошло.
- Отключить Windows+D в реестре. Смотрите этот ответ.
- Захватите ключи, используя код ниже. Источник
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>
Windows+D перехватывается ОС и не пересылается в браузер. Возможный обходной путь - использовать Ctrl+Windows+D для имитации Windows+D.