Как использовать окно прослушивания клавиш для клавиш, которые Chrome использует в качестве ярлыков? - PullRequest
0 голосов
/ 01 июня 2019

Странная проблема: я сталкивался с запуском этого кода в Google Chrome:

window.addEventListener('keydown', function (event) {
    console.log(event)
})

Пока я вижу журнал для некоторых клавиш ("w", "a", "s", пробел, "esc ", например) - другие ключи не вызывают это событие:" d "," r "," l "

На самом деле, некоторые из этих букв (например," r ") являются встроеннымиярлык в Chrome, который вызывает другое событие, например обновление страницы.

Интересно, что использование preventDefault не решает проблему:

window.addEventListener('keydown', function (event) {
    event.preventDefault()
    console.log(event)
})

Обратите внимание, что в Firefoxоригинальный код (без preventDefault) работает нормально - но не в Chrome.

Есть идеи, как решить эту проблему?

Обновление Может быть стоит отметить(хотя я не уверен, почему это влияет на это), что при запуске этого кода из файловой системы нет проблем в Chrome.Но как только этот код обслуживается (т.е. с localhost), мы сталкиваемся с проблемой.

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Ничего себе. Оказывается, у меня было установлено расширение, которое делало какие-то дурацкие вещи с привязками клавиш.

Это хорошее расширение для повышения производительности, но если кто-то еще использует его, остерегайтесь этой ошибки:

Vimium

0 голосов
/ 01 июня 2019
document.addEventListener("keydown",function(e){
        console.log(e.keyCode);
    })

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

if(e.keyCode == 32){
   video.pause();
}

32 - это код клавиши пробела

...