1 réponse
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
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
A+
Hervé
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
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
Merci beaucoup pour ton aide! Ce script correspond exactement à ce qu'il me fallait.
A +
Hervé
tu le débranche." voila a+