Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 23h36   #1
Candidat au titre de Membre du Club
 
Benoit
Inscription : janvier 2006
Messages : 36
Détails du profil
Informations personnelles :
Nom : Benoit

Informations forums :
Inscription : janvier 2006
Messages : 36
Points : 11
Points : 11
Par défaut Intercepter une touche (Firefox)

Bonsoir,

Depuis la dernière mise à jour de Firefox (9.01), j'ai un petit script qui me rendait grand service qui ne marche plus. Je suppose que le code ne doit pas être bien propre...

J'ai un site web (en php /MySQL) de photos. Si je veux commenter les infos de l'une d'elles, je clique dessus, et un pop-up de menu s'affiche :
- Touche X : supprimer
- Touche C : modifier le commentaire
- Touche I : modifier les infos
etc, etc.

Ce qui me permet d'une simple frappe d'accéder à la page voulue pour l'action donnée, ce qui est beaucoup plus rapide que d'aller cliquer sur un lien avec la souris. Si je tape une touche qui n'est pas dans la liste, ça ferme le pop-up.

Voici le code que j'utilisais pour ça ($jpkget correspond au nom du fichier .jpg):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<HTML>
<HEAD>
...
<?php 
echo "
	<SCRIPT type=\"text/javascript\">
 
	function touche(e){
		if (window.event)
		{
			touche=window.event.keyCode;
		}
		else
		{
			touche=e.which;
		}
 
		if (touche == 120) {location.href=\"ecm.php?valid=supprime&jpk=".$jpkget."\";}
		else if (touche == 111) {location.href=\"ecm.php?valid=infos&jpk=".$jpkget."\";}
		else if (touche == 118) {location.href=\"ecm.php?valid=vt&jpk=".$jpkget."\";}
		...
		else {window.close();}
	}
	</SCRIPT>";
?>
</HEAD>
 
<BODY OnKeyPress="touche(e);" OnBlur="window.close();">
 
<B>I</B> - Modifie infos<BR />
<B>X</B> - Supprime<BR>
...
 
</BODY>
</HTML>
Désormais, quand j'appuie sur une touche, plus rien ne se passe.
Est-ce que l'événement OnKeyPress n'est plus valable ? ou non attribuable à la balise BODY ? ou le problème vient d'ailleurs ?

Merci pour votre aide...

BM
BMATH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 21h31   #2
Modérateur
 
Avatar de Golgotha
 
Homme cédric
Développeur informatique
Inscription : août 2007
Messages : 732
Détails du profil
Informations personnelles :
Nom : Homme cédric
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 732
Points : 1 562
Points : 1 562
Envoyer un message via Skype™ à Golgotha
Bonsoir,

essaye avec ça :

Code :
OnKeyPress="touche(event);"
Et renomme ta fonction ou ta variable touche, ce sont deux chose différente avec le même nom... donc ça aide pas le navigateur
__________________
modérateur webmasters - développements web & php
faq jQuery - règles du forum - faqs web
mon espace perso
Venez participez au deuxième defi Web !
Golgotha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 21h55   #3
Candidat au titre de Membre du Club
 
Benoit
Inscription : janvier 2006
Messages : 36
Détails du profil
Informations personnelles :
Nom : Benoit

Informations forums :
Inscription : janvier 2006
Messages : 36
Points : 11
Points : 11
Merci pour ton aide.

J'ai modifié ma balise d'appel
Code :
OnKeyPress="fntouche(event);"
J'ai renommé la fonction en fntouche
Code :
function fntouche(event){
et corrigé dans la ligne 15
et... ...ça ne marche toujours pas.

Pourtant, si je place mon OnKeyPress sur une balise <INPUT>, et que je tape (sur la page web) à l'intérieur de ce contrôle formulaire, ça marche nickel.

Tout se passe comme si la balise <BODY> n'acceptait pas cet événement. J'ai essayé sur un <DIV>, aussi, et ça marche pas plus.
...Pourtant, si j'en crois cette page du W3, ça devrait...

J'ai aussi essayé ce code, sans succès : https://developer.mozilla.org/en/DOM/event.which

Je cherche, je cherche,... mais c'est pas concluant...

BM
BMATH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 22h54   #4
Candidat au titre de Membre du Club
 
Benoit
Inscription : janvier 2006
Messages : 36
Détails du profil
Informations personnelles :
Nom : Benoit

Informations forums :
Inscription : janvier 2006
Messages : 36
Points : 11
Points : 11
Bon, je n'ai rien touché, et ça marche à nouveau,...

...depuis une nouvelle mise à jour de FF, il me semble
(personne n'est parfait ! )
BMATH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 17h49   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
Citation:
Envoyé par BMATH Voir le message
Bon, je n'ai rien touché, et ça marche à nouveau,...

...depuis une nouvelle mise à jour de FF, il me semble
(personne n'est parfait ! )
effectivement, et merci du retour.
Citation:
Envoyé par https://developer.mozilla.org/en/DOM/event.which
Note: The above example code fails in Firefox 9 due to bug 696020.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h16.


 
 
 
 
Partenaires

Hébergement Web