OVH Cloud OVH Cloud

Gestion d'eventKeys & inhibition comportement par défaut

2 réponses
Avatar
jf gosset
Bonjour,

Je souhaite effectuer un traitement spécial sur frappe de CTRL-R
(soumission formulaire par monBouton.click()).

Tout est OK et fonctionne correctement sous IE et Opera.
Par contre sous Mozilla, le formulaire est bien envoyé mais l'action par
défaut de Mozilla (rafraîchir) s'exécute à la suite (bouton.click() ->
envoi formulaire -> réception nouvelle page en retour -> Mozilla redemande
la page d'origine).

J'ai pourtant procédé de la manière suivante :

Handler événement keydown:
monBouton.click();
suivi de :
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
if (event.preventDefault) event.preventDefault();
event.returnValue = false;
return false;

Handlers keyup et keydown, j'inhibe également la propagation de
l'événement:
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
if (event.preventDefault) event.preventDefault();
event.returnValue = false;
return false;


Je suis donc un peu sec. Une idée ?

Merci.

2 réponses

Avatar
YD
Bonjour,

Je souhaite effectuer un traitement spécial sur frappe de CTRL-R
(soumission formulaire par monBouton.click()).
[...]
Par contre sous Mozilla, le formulaire est bien envoyé mais l'action par
défaut de Mozilla (rafraîchir) s'exécute à la suite (bouton.click() ->
envoi formulaire -> réception nouvelle page en retour -> Mozilla redemande
la page d'origine).

J'ai pourtant procédé de la manière suivante :

Handler événement keydown:
monBouton.click();
suivi de :
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
if (event.preventDefault) event.preventDefault();
event.returnValue = false;
return false;


Mozilla ne connaît pas event, mais l'événement est passé en paramètre au
gestionnaire. Il faut donc écrire dans la fonction gestionnaire :

function machinChose(e){
//Récupérer dans e l'événement (pour IE)
if(!e) e=event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
return false;
}

--
Y.D.

Avatar
jf gosset
YD wrote in
news:418a97bf$0$4755$:


function machinChose(e){
//Récupérer dans e l'événement (pour IE)
if(!e) e=event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
return false;
}



Oui, c'est ce que j'ai fait. Ce que j'appelle "event" est bien ce que j'ai
récupéré dans mon handler :

function __gerer_onkey(event_)
{
// pour IE
if (! event_ == undefined)
var event = window.event
// MZ Opera
else
event = event_

... je travaille ensuite avec event