|
|
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 */ });
|
|