Evento continuo onkeydown in Firefox
-
16-09-2020 - |
Domanda
Ho un normale gestore di eventi OnKeydown che spara una funzione, come questa:
window.onkeydown = onKeyDown;
.
funziona essenzialmente, ma cattura solo 1 chiave in Firefox.Quindi devo rilasciarlo e premere di nuovo.
Google Chrome mi offre una presa continua, quindi mi chiedo se questo è a scelta.
Soluzione
Hai provato l'evento keypress
?L'evento keypress
viene sparato dopo keydown
se il tasto è tenuto giù.
Altri suggerimenti
Cosa succede se provi qualcosa del genere:
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
while (iskeydown) continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
samplecount = samplecount + 1;
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
.
Realizzato meglio:
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
if (iskeydown == 1) {
samplecount = samplecount + 1;
setTimeout("continuous()",200);
}
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
. Immagino che sia necessario utilizzare un Mac o Linux, poiché in Windows, Firefox supporta gli eventi generacodicitagCode automaticamente ripetuti.In altri sistemi operativi, tuttavia, ottieni solo eventi keydown
ripetuti automaticamente quando si tiene premuto un tasto.In sintesi, se è possibile utilizzare l'evento keypress
.
Vedi Articolo eccellente di Jan Wolter su JavaScript Eventi chiave per ulteriori informazioni.