Saya memindai jawaban di atas dan pendekatan keydown/ yang diusulkan keyuphanya berfungsi dalam keadaan khusus. Jika alt-tab pengguna menjauh, atau menggunakan isyarat tombol untuk membuka jendela atau tab browser baru, maka a keydownakan terdaftar, yang tidak masalah, karena pada saat itu tidak mungkin untuk mengetahui apakah kuncinya adalah sesuatu yang dipantau aplikasi web , atau browser standar atau pintasan OS. Kembali ke halaman browser, ia masih berpikir bahwa kunci tersebut ditahan, meskipun sementara itu dirilis. Atau beberapa kunci disimpan begitu saja, saat pengguna beralih ke tab atau aplikasi lain dengan mouse, lalu dilepaskan di luar halaman kami.
Tombol pengubah ( Shiftdll.) Dapat dipantau melalui mousemovedll. Dengan asumsi bahwa setidaknya ada satu interaksi mouse yang diharapkan saat melakukan tab ke belakang, yang sering terjadi.
Bagi kebanyakan semua kunci lainnya (kecuali pengubah, Tab, Delete, tapi termasuk Space, Enter), pemantauan keypressakan bekerja untuk sebagian besar aplikasi - kunci ditekan akan terus api. Ada beberapa latensi dalam menyetel ulang kunci, karena periodisitas keypresspenembakan. Pada dasarnya, jika keypresstidak terus aktif, maka mungkin saja untuk mengesampingkan sebagian besar kunci. Ini, dikombinasikan dengan pengubah cukup kedap udara, meskipun saya belum menjelajahi apa yang harus dilakukan dengan Tabdan Backspace.
Saya yakin ada beberapa perpustakaan di luar sana yang mengabstraksi kelemahan DOM ini, atau mungkin beberapa perubahan standar DOM menanganinya, karena ini pertanyaan yang agak lama.