11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous les membres.

Enfin, j'ai décidé de m'inscrire après avoir parcouru ce forum depuis quelques temps. Je vous pose un problème que j'ai.

Voilà, j'aimerai savoir si nous pourrions intégré le onKeyDown autre par que dans la balise body et qu'il soit tout de même interprété dans la page ? et donc pouvoir laisser le body normal <body>...

<body onKeyDown="detectTouche(event)">
Bonjour feufeu,

Il semblerait que tu puisses intégrer "onkeydown" (en fait, tout les "onkey") dans toute les balises. Vérifie si cela fonctionne à ton goût.
Modifié par papillon41 (09 Apr 2007 - 14:25)
Bonjour,

L'attribut onkeydown (à écrire en minuscules pour un document XHTML) est en effet commun à quasiment tous les éléments. Soit dit en passant, un petit test avec le validateur ou un coup d'oeil aux DTD permettent de répondre à ce genre de questions. Smiley smile
Je que j'aimerai, s'est faire fonctionner le "onkeyDown" dans la page en le mettant entre les balises <head> mais je n'y arrive pas :S
Onkeydown est valide pour la plupart des éléments, mais il n'est pas forcément pertinent partout.
Onkeydown fonctionne sur le body et sur n'importe quel élément qui peut recevoir le focus, c'est-à-dire : éléments de formulaire et liens essentiellement.

Maintenant, peux-tu donner plus d'infos quand tu dis que tu veux le mettre dans le head ?
Es-tu à la recherche de la syntaxe :
document.onkeydown = function () { ... }
?
Merci pour la réponse,

Je vais mieux m'expliquer.

Je suis entrain de développer un module adaptable aux sites internet pour naviguer à l'aide des touches du clavier. (voir : www.systeme-atv.net ). Ce que j'aimerai s'est qu'il y ai juste une modification à faire par page, donc, un seul include javascript qui permet de mettre en oeuvre la reconnaisance des touches du clavier sur toute la page sans passer donc par la modification de la balise body. Mais un simple :

<script language="javascript" type="text/javascript" src="touches.js"></script>


Mon code de reconnaisance des touches conetnu dans touches.js est :



function detectTouche(e){
    if(parseInt(navigator.appVersion) >=4){
        if(navigator.appName == 'Netscape'){ // Pour Netscape, firefox, ...
            //document.getElementById('zone').value = String.fromCharCode(e.which);
			x=e.which;
			if(x==97){window.location.href='blabla.php';}
        }
        else{ // pour Internet Explorer
			x=e.keyCode;
			if(x==97){window.location.href='blabla.php';}

        }
    }
}


Modifié par feufeu (09 Apr 2007 - 15:48)
bonjour,
Tu souhaites rediriger ton visiteur s'il actionne une touche du clavier numérique (1, dans ce cas) ?

Suis d'abord les conseils de julien Royer et de QuentinC.
Question accessibilité, je doute Smiley lol

Côté js, je te propose un code plus simple et plus adapté que le tien, car pour les navigateurs respectants les standards, le paramètre de ta fonction transmet l'évènement, et pas pour IE/win jusqu'alors (pour Vista je ne sais pas) :

function detectTouche(e){
   x = e?e.which:event.keyCode;
   if(x==97){window.location.href='blabla.php';}
  }
document.onkeydown=detectTouche

Modifié par chmel (09 Apr 2007 - 19:37)
QuentinC a écrit :
Onkeydown est valide pour la plupart des éléments, mais il n'est pas forcément pertinent partout.
Onkeydown fonctionne sur le body et sur n'importe quel élément qui peut recevoir le focus, c'est-à-dire : éléments de formulaire et liens essentiellement.
Non, puisque l'événement keydown est affecté par le bouillonnement (bubbling). Il est donc valide et pertinent sur la plupart des éléments. Smiley cligne
Bien vu pour le bubbling, je n'y avais pas pensé
Bon, toujours est-il que les évènements clavier récupérés sur le body ne sont pas très pratiques d'utilisation.