Ho analizzato le risposte di cui sopra e l' approccio keydown/ proposto keyupfunziona solo in circostanze speciali. Se l'utente utilizza un tasto alt-tab per aprire una nuova finestra o scheda del browser, keydownverrà 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 ( Shiftecc.) Possono essere monitorati tramite mousemoveecc. 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 keypressavrebbe 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 keypressattivazione. Fondamentalmente, se keypressnon 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 Tabe 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.