Веб-браузер не может захватить ключ Windows + D, почему?

Веб-браузеры не в состоянии захватить комбинацию клавиш Windows. Например, клавиша Windows + D отображает рабочий стол.

Однако в браузере JS может только обнаружить событие нажатия клавиши Windows, но не может захватить событие клавиатуры D или событие нажатия клавиши Windows.

В чем глубокая причина этого? Есть ли документ, объясняющий это?

2 ответа

Не идеальный ответ, но вам может потребоваться изменить реестр Windows, чтобы это произошло.

  1. Отключить Windows+D в реестре. Смотрите этот ответ.
  2. Захватите ключи, используя код ниже. Источник

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.

Другие вопросы по тегам