Захват ключевых событий, когда они уже «захвачены» с помощью «protectDefault` или« stopPropagation » - PullRequest
1 голос
/ 21 февраля 2020

Я пишу расширение 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});
...