Przeskanowałem powyższe odpowiedzi i zaproponowane keydown/ keyuppodejście działa tylko w szczególnych okolicznościach. Jeśli użytkownik opuści alt-tab lub użyje gestu klawisza, aby otworzyć nowe okno lub kartę przeglądarki, keydownzostanie zarejestrowany a, co jest w porządku, ponieważ w tym momencie nie można stwierdzić, czy klucz jest czymś, co monitoruje aplikacja internetowa lub jest standardowym skrótem przeglądarki lub systemu operacyjnego. Wracając do strony przeglądarki, nadal będzie myśleć, że klucz jest wstrzymany, chociaż został w międzyczasie wydany. Lub jakiś klawisz jest po prostu przytrzymywany, podczas gdy użytkownik przechodzi do innej karty lub aplikacji za pomocą myszy, a następnie zwalniany poza naszą stroną.
Klawisze modyfikujące ( Shiftitp.) Mogą być monitorowane za pomocą mousemoveitp., Przy założeniu, że podczas cofania tabulatorem spodziewana jest przynajmniej jedna interakcja myszy, co często ma miejsce.
Dla większości wszystkie inne klawisze (oprócz modyfikatorów Tab, Deleteale w tym Space, Enter), monitoring keypressbędzie pracować dla większości zastosowań - klucz przytrzymany nadal będzie ogień. Istnieje jednak pewne opóźnienie w resetowaniu klucza ze względu na okresowość keypressodpalania. Zasadniczo, jeśli keypressnie strzela dalej, można wykluczyć większość klawiszy. To w połączeniu z modyfikatorami jest dość szczelne, chociaż nie zbadałem, co zrobić z Tabi Backspace.
Jestem pewien, że jest jakaś biblioteka, która streszcza tę słabość DOM, a może jakaś standardowa zmiana DOM załatwiła to, ponieważ jest to dość stare pytanie.