Javascript

herve7 Messages postés 23 Statut Membre -  
 guillaume -
salut

est il possible en javascript de detecter l'appui sur les touches du clavier, et si oui comment ???

merci

1 réponse

  1. PhP
     
    Salut herve

    La réponse est oui ! [:)

    Voici l'adresse du site (en anglais !) où tu as un bon tutorial qui explique cela très bien :

    http://www.wsabstract.com/javatutors/javascriptkey.shtml

    Voici un petit ex en français si tu préféres.
    Je me suis très largement inspiré du site précédemment cité ...

    Ce script affiche une fenêtre avec le msg "Vous avez appuyé sur la touche R" lorsque l'utilisateur appuie effectivement sur le touche 'R' (Etonnant non ?) Attention de bien être en majuscule !

    Version pour Netscape 4 ou + :
    _________________________

    <script language="JavaScript1.2">
    <!--

    // On test si le navigateur est NS 4+
    if (document.layers)

    // On capture l'événement KEYPRESS (donc touche appuyée) au niveau du document complet
    document.captureEvents(Event.KEYPRESS)

    // On créé la fct qui va servir de gestionnaire d'événement et être
    // appelée à chaque fois qu'une touche va être enfoncée.
    function msg_touche_R(e)
    {
    if(String.fromCharCode(e.which)=="R")
    alert("Vous avez appuyé sur la touche R")
    }

    // On test si le navigateur est NS 4+
    // puis on affecte à l'évenement KEYPRESS notre gestionnaire d'évènement msg_touche_R
    if (document.layers)
    document.onkeypress=msg_touche_R

    // -->
    </script>

    Version pour Internet Explorer 4 ou + :
    ________________________________

    <script language="JavaScript1.2">
    <!--

    // Le gestionnaire d'événement
    function msg_touche_R(e)
    {
    if(String.fromCharCode(event.keyCode)=="R")
    alert("Vous avez appuyé sur la touche R")
    }

    // On affecte notre gestionnaire d'événement à l'événement KEYPRESS
    document.onkeypress=alert_keycode

    // -->
    </script>

    Into the mix ... :
    ______________

    <html>
    <head>

    <script language="JavaScript1.2">
    <!--

    // On test si le navigateur est NS 4+
    // On capture l'événement KEYPRESS (donc touche appuyée)
    // au niveau du document complet
    if (document.layers)
    {
    document.captureEvents(Event.KEYPRESS)
    }

    // On créé la fct qui va servir de gestionnaire d'événement
    // et être appelée à chaque fois qu'une touche va être enfoncée.
    // Nota le paramètre "e" ne sert à rien avec IE 4
    // mais n'interfère pas Ouf !
    function msg_touche_R(e)
    {
    // tch contient le code numérique de la touche pressée
    tch = (document.layers) ? e.which : event.keyCode;

    if(String.fromCharCode(tch)=="R")
    alert("avez appuyé sur la touche R")
    }

    // On affecte à l'évenement KEYPRESS notre gestionnaire d'évènement msg_touche_R
    document.onkeypress=msg_touche_R;

    // -->
    </script>

    </head>

    <body>
    <p>Appuyer sur la touche "R" et pas "r" pour voir le message !</p>
    </body>
    </html>

    Reste à tester si on a un "R" majuscule ou un "r" minuscule !

    Et voilà

    @+
    Philippe

    0
    1. herve7 Messages postés 23 Statut Membre 3
       
      merci beaucoup pour ton aide, ca a fonctionné!

      A+
      Hervé
      0
    2. herve7 Messages postés 23 Statut Membre 3
       
      tout pour emmerder le monde...

      en fait, j'aurais besoin de detecter une combinaison de touches (par ex R+A)...
      J'ai essayer d'additionner la valeur des touches pressees, mais ca n'a pas fonctionné. De plus je suis allé voir sur le site dont tu m'as laissé l'adresse, et je n'ai pas trouvé.
      Est ce faisable?

      Merci
      0
      1. PhP > herve7 Messages postés 23 Statut Membre
         
        Slt RV

        Une combinaison de touche de type "R"+"A" ???

        Heu d'habitude c'est plutôt une combinaison du style "R"+Ctrl ou "R"+Alt !

        Enfin comme tu veux ...

        Non j'déconne

        Donc pour scanner une série de touche il faut que tu stockes la série de touches dans un tampon. Ce buffer est tout simplement une variable JS globale.

        Ce qu'il faut faire :

        Définir une combinaison
        Stocké uniquement les lettres "compatibles" avec le combinaison sinon vider le buffer
        Réagir dès que la combinaison est rencontrée et effacer le buffer

        Et voilà le prog modifié :

        Into the mix ... :
        ______________


        <html>
        <head>

        <script language="JavaScript1.2">
        <!--

        // Variables globales
        var combi="HERVE"
        var buffer=""


        function combi_action()
        {
        alert("Salut HERVE : ça te convient ?")
        }


        if (document.layers)
        {
        document.captureEvents(Event.KEYPRESS)
        }

        function capture_touche(e)
        {
        // tch contient le code numérique de la touche pressée
        tch = (document.layers) ? e.which : event.keyCode;

        // On ajoute la dernière touche au buffer
        buffer=buffer+String.fromCharCode(tch)


        // On test si combi commence par les mêmes lettres que buffer
        if (combi.indexOf(buffer,0) == 0)
        {
        // Si la séquence est complète on lance l'action ...
        if (combi==buffer)
        {
        combi_action()
        // Raz buffer car action effectuée
        buffer=""
        }
        }
        else
        {
        // On efface le buffer car il ne convient pas
        buffer=""
        }
        }

        document.onkeypress=capture_touche;

        // -->
        </script>

        </head>

        <body>
        <p>Appuyer successivement sur les touches "H" "E" "R" "V" et "E" pour voir le message !</p>
        </body>
        </html>




        @+
        Philippe
        0
      2. herve7 Messages postés 23 Statut Membre 3 > PhP
         
        Salut Philippe

        Merci beaucoup pour ton aide! Ce script correspond exactement à ce qu'il me fallait.

        A +

        Hervé
        0
      3. guillaume > herve7 Messages postés 23 Statut Membre
         
        c'est simple pour désactiver un clavier tu fait :"
        tu le débranche." voila a+
        0