Cross-browser, problemi con la gestione degli eventi da tastiera

ClaS

Nuovo Utente
29 Gen 2011
2
0
0
Ciao a tutti,
ho un problema con javascript e la gestione degli eventi provenienti da tastiera. Per semplificare al massimo io ho un semplice div al quale ho collegato una funzione javascript che gestisce gli eventi provenienti dalla tastiera. Semplicemente in base al tasto premuto stampo un alert differente. Il tutto funziona benissimo in Firefox, mentre in Internet Explorer (versione 8) e Google Chrome viene "intercettato" solo il tasto tab, mentre se premo le freccette non succede proprio nulla. Riporto di seguito il codice:

<script>

function optionKeyEvent(event){
if (event.altKey) {
alert("Hai premuto alt");
return true;
}

else if(event.shiftKey){
alert("Hai premuto shift");
return true;
}

//se viene premuto TAB
else if(event.keyCode == 9){
alert("Hai premuto tab");
return true;
}

//se viene premuta la freccia in basso
else if (event.keyCode == event.DOM_VK_DOWN) {
alert("Hai premuto freccia giu");
return true;
}

//se viene premuta la freccia in alto
else if (event.keyCode == event.DOM_VK_UP) {
alert("Hai premuto freccia su");
return true;
}

//se viene premuta la freccia a destra
else if (event.keyCode == event.DOM_VK_RIGHT) {
alert("hai premuto freccia destra");
return true;
}

//se viene premuta la freccia a sinistra
else if (event.keyCode == event.DOM_VK_LEFT) {
alert("Hai premuto freccia sinistra");
return true;
}
else {
return true;
}
}
</script>

questo è lo script e questo la parte html:

<div id="menuDiv">
<div class="1" tabindex="0" id="fileMenu" onkeydown="return optionKeyEvent(event);">Menu 1</div>
</div>

Ho provato anche cambiando onkeydown con onkeypress ma le cose addirittura peggiorano perchè non viene intercettato nemmeno il tab. Qualcuno sa aiutarmi?
Grazie mille