Ho analizzato le risposte di cui sopra e l' approccio keydown
/ proposto keyup
funziona solo in circostanze speciali. Se l'utente utilizza un tasto alt-tab per aprire una nuova finestra o scheda del browser, keydown
verrà registrato un, il che va bene, perché a quel punto è impossibile dire se la chiave è qualcosa che l'app web sta monitorando o è un browser standard o un collegamento del sistema operativo. Tornando alla pagina del browser, penserà ancora che la chiave sia trattenuta, anche se nel frattempo è stata rilasciata. Oppure qualche tasto viene semplicemente tenuto premuto, mentre l'utente passa a un'altra scheda o applicazione con il mouse, quindi rilasciato al di fuori della nostra pagina.
I tasti modificatori ( Shift
ecc.) Possono essere monitorati tramite mousemove
ecc. Supponendo che ci sia almeno un'interazione con il mouse prevista quando si torna indietro, il che è spesso il caso.
Per la maggior parte tutti gli altri tasti (ad eccezione di modificatori, Tab
, Delete
, ma compresa Space
, Enter
), il monitoraggio keypress
avrebbe funzionato per la maggior parte delle applicazioni - un tasto premuto continuerà a fuoco. Tuttavia, c'è una certa latenza nel ripristino della chiave, a causa della periodicità di keypress
attivazione. Fondamentalmente, se keypress
non si continua a sparare, è possibile escludere la maggior parte delle chiavi. Questo, combinato con i modificatori, è abbastanza ermetico, anche se non ho esplorato cosa fare con Tab
e Backspace
.
Sono sicuro che ci sono alcune librerie là fuori che astraggono su questa debolezza del DOM, o forse qualche modifica allo standard DOM se ne è occupata, poiché è una domanda piuttosto vecchia.