Обнаружить клавиши CTRL и SHIFT без события нажатия клавиши?

Мне было интересно, могу ли я обнаружить нажатие клавиш CTRL и SHIFT БЕЗ использования события keydown.

Причина в том, что я создаю своего рода Grid Viewer в JavaScript, и я реализовал выделение различных элементов, удерживая клавишу CTRL или SHIFT, так как это работает в большинстве распространенных программ просмотра, редакторов и так далее.

Проблема в том, что когда фокус находится нигде на странице. Например я добавляю страницу в закладки. Затем я удерживаю CTRL или SHIFT и нажимаю на элемент, но он работает нормально, так как нажатие на клавишу еще не было запущено.

Любой способ пропустить это? Возможно, нет, но это может сбить с толку клиентов, которые будут воспринимать это как мою собственную очевидную ошибку.

1 ответ

Решение

Вам не нужны какие-либо ключевые события для обнаружения Shift, Ctrl и Alt при щелчке мышью по MDN.

Объект Event содержит эту информацию:

element.addEventListener('click', function (e) {
    console.log(e.shiftKey);
    console.log(e.ctrlKey);
    console.log(e.altKey);
});

Демо на jsFiddle.

Эти свойства можно прочитать также в обработчиках событий клавиатуры.

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