Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    5

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

    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>

    Qualcuno sa aiutarmi?
    Grazie mille

  2. #2
    hai provato di mettere al posto di onkeydown
    onkeypress
    ???

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    5
    Si ma il risultato è lo stesso... funziona con Firefox ma con IE e Chrome no...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    5
    Anzi mettendo onkeypress non mi intercetta più nemmeno il tab...

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    documentati qui non è recentissima, potrebbe essere cambiato qualcosa nel frattempo, comunque un indicazione ce l'hai.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    5
    Ho trovato qual'era il problema. IE e Chrome sembrano non riconoscere "event.DOM_VK_LEFT" e le altre che avevo usato per i tasti freccia. Se invece si sostituisce questa stringa con i keycode numerici allora funziona tutto perfettamente. Quindi il controllo corretto sarebbe

    if (event.keyCode == 37)

    e non

    if (event.keyCode == event.DOM_VK_LEFT)

    che invece viene riconosciuto solo da Firefox.
    Grazie a tutti per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.