Я пишу расширение Chrome, которое внедряет некоторый код в существующую страницу. Я пытаюсь захватить указанную комбинацию клавиш c, CTRL + ; , и способ сделать это достаточно прост:
document.addEventListener("keyup", function(e) {
if(e.ctrlKey && e.key === ";"){
doSomething();
}
});
Это Решение работает для «дома» веб-приложения, в которое я вливаю. Впрочем, «игрок» - это другая история. Кажется, что он захватывает каждое keyup
(и, вероятно, keydown
) событие на странице и, вероятно, использует preventDefault
или stopPropagation
, чтобы предотвратить их передачу в браузер для просмотра в браузере, что также делает мой приведенный выше фрагмент не -functional.
Мой вопрос: как я могу go захватить эту ключевую комбинацию, когда "игрок" включен? Вот полный код на GitHub, если необходимо.
Примечание: подключиться к "нативному" JS этой страницы будет очень сложно, так как очень запутанный (вспомним Google).
РЕДАКТИРОВАТЬ: я пытался установить useCapture
, но это также не захватывает события keyup
, к сожалению:
document.addEventListener("keyup", function(e) {
if(e.ctrlKey && e.key === ";"){
doSomething();
}
}, true);
и
document.addEventListener("keyup", function(e) {
if(e.ctrlKey && e.key === ";"){
doSomething();
}
}, {useCapture: true});