JaliosXperience
fr en
Path > Home > Forums > French Forum
Link

Problème de javascript via l'événement "refresh:after"

Nicolas Donato - on 9/3/10 at 12:11 PM

Bonjour,

je recherche un moyen de créer via un code JavaScript des Event sur des tags HTML.

Mon objectif est de créer un Event click sur un tag html de type a href et produire du code JavaScript.

Mon cas de test est que mon event click appel une fenêtre modale en faisant un showJsp. Suite à la fermeture de ma fenêtre modal, je re-clique sur mon tag html et la j'ai deux événements envoyés et non un seul comme précisé par mon code JavaScript.

Je me suis rendu compte que l'événement "refresh:after" est appelé par la fenêtre modal et donc ajoute un autre événement click sur le tag. Or je ne me sers de l'événement "refresh:after" que lorsque je fais subir un refresh via le framework AjaxRefresh et donc rajouter l'événement click à mon nouveau tag html .

Comment peut-on différencier l'événement "refresh:after" venant de l'affichage d'une fenêtre modal et venant d'un appel à AjaxRefresh ?

Cordialement

Jean-Noël Hoursin - on 9/3/10 at 3:20 PM

Bonjour,

La R&D a été contactée sur le sujet, nous reviendrons vers vous dès que nous aurons plus d'informations.

Le ticket de support n° 1985 a été créé. Pour toute demande relative à ce dossier, merci de nous communiquer ce numéro.

Cordialement

Jean-Noël Hoursin - on 9/3/10 at 5:43 PM

Ci-joint la réponse de la R&D

1. Pour brancher un évènement JavaScript ont fait:
Event.observe(element, "click", JCMS.plugin.Plugin.maFonction);

1.1 Si l'élément est de nature a se faire écraser régulièrement par Ajax-Refresh ou autre (exemple les icones de menu contextuel), on utilise alors la fonction Util.observeClass() qui observe tous les click sur des éléments clickable (lien, bouton, ...) ayant la classe donnée. Donc pas de branchement nécessaire.
1.2 Il est parfois possible de brancher des évènements de manière "lazy" au focus d'un champs, ou lors d'un mouseover. Cela réduit les temps de traitement javascript.
2. Ajax-Refresh envoie des évènements refresh:before et refresh:after. Ils sont appelé pour brancher ET débrancher le code javascript spécifique.
3. Pour ouvrir une fenêtre modale depuis un click le cas le plus simple est de faire
<a href="ajax/ajax.jsp" class="modal">Open my modal</a>

Conclusion,
Si l'action est simple le point 3 est tout a fait indiqué Si l'action est de plus complexe faire <a href="" onclick="">Lien</a> dans le code AjaxRefresh.

De manière plus général, les pages affichées en ajax refresh doivent pouvoir s'afficher (dans la mesure du possible) sans JavaScript et donc sans compter sur le refresh:after (plutôt utilisé pour initialiser du DragnDrop)
Pourquoi ne pas débrancher l'évènement lors du refresh:before ? Ou tout simplement tester si le branchement n'a pas déjà été fait ?

var elm = // Find my link
if (elm._init){ return; }
elm._init = true;
Event.observe(elm, 'click', func(){ /* do job */ });

Nicolas Donato - on 9/6/10 at 10:47 AM

Bonjour,

merci pour ces précisions.

Login   Home   fr en
JALIOS SA - SIREN 440 126 035