Partage
  • Partager sur Facebook
  • Partager sur Twitter

Actions sur touche du clavier

ne fonctionne pas sur IE

    16 janvier 2009 à 19:23:36

    Je veux pouvoir utiliser les touches du clavier.

    Pour cela, j'utilise deux fonctions :

    - La première fait appel à un champ de saisie. Je mets un focus dessus, pour que chaque action sur une touche du clavier y soit reliée.
    Je dis ensuite que chaque action sur une touche du clavier appelle la fonction enfonceTouche()

    function permettreActions()
    	{
    		var champSaisie = document.getElementById("champsaisie");
    		champSaisie.focus();
    		addListener(champSaisie,"keydown",enfonceTouche);	
    	}
    


    - la fonction enfonceTouche comporte un petit bout de code sensé permettre la compatibilité avec IE et les autres navigateurs.

    function enfonceTouche(event)
    	{
    		if (document.all)
    		{
    			var toucheEnfoncee = event.keyCode;
    		}
    		else
    		{
    			var toucheEnfoncee = event.which;
    		}
               
                    ...
    
    	}
    


    Sur Firefox, Opera, Safari, tout fonctionne parfaitement.
    Sur IE, j'ai identifié deux niveaux de problèmes :

    - Au niveau du focus. Si j'affiche le champ, je constate que le focus n'est pas pris en compte. Le champ n'est pas sélectionné. Actionner les touches fléchées fait bouger la fenêtre comme avec le scroll de la souris, donc. Une fois le champ sélectionné, ça n'est plus le cas.

    - Au niveau de la reconnaissance des touches. Une fois le formulaire sélectionné manuellement, ça n'est pas pour autant que d'actionner une touche fonctionne. Dans la fonction enfonceTouche(), un alert sur la variable toucheEnfoncee() ne retourne d'ailleurs rien. Seule la touche entrée recharge la page, considérant qu'on valide le formulaire.

    Je ne comprends pas trop ce qui ne va pas, car à ma connaissance il n'y a pas de problème avec focus et IE ?
    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 janvier 2009 à 19:36:35

      event, event. IE connait pas:

      function enfonceTouche(e) {
              var e = e || window.event, // ie de merde
                  keyCode = e.keyCode || e.which; // ie de merde le retour
      
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        16 janvier 2009 à 19:56:19

        Merci ! J'avoue avoir du mal à identifier ce que IE ne reconnaît pas ! Je perd un temps fou là dessus ^^ Bon enfin, ça ajoute un intérêt supplémentaire (ou pas).

        Bon, enfin ça ne fonctionne toujours pas, meme en sélectionnant le champ manuellement. A moins que ça soit le problème sur le focus qui ne bloque tout ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 janvier 2009 à 20:10:47

          donnes tout le code
          • Partager sur Facebook
          • Partager sur Twitter
            16 janvier 2009 à 21:47:14

            Euh, le code est plutôt bien long mais, tu peux le trouver ici dans son intégralité :

            script Tetris

            Tu peux tester le script ici sinon
            tester Tetris
            J'ai affiché le champ de saisie en haut à gauche, qui est sensé réagir au focus, et capturer les actions sur les touches.

            Je ne vois pas trop où l'erreur pourrait être ailleurs que dans les fonctions que j'ai données, sachant que la 1ère est appelée dès le chargement de la page, et appelle la seconde, et que le problème se situe au niveau de la reconnaissance des touches
            • Partager sur Facebook
            • Partager sur Twitter

            Actions sur touche du clavier

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown