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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top