Bonjour,
J'ai un problème avec la fonction Ajax.Responders.unregister() de la librairie prototype.
Lors d'un appel ajax, j'affiche un overlay et une barre de progression pour faire patienter les utilisateurs, pour le faire à chaque appel j'ai définit un Responders.
Mon problème est le suivant, pour un type particulier d'appel (affichage d'une popup) je voudrais supprimer ce Responders .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39 responderOnCreate = function() { Ajax.activeRequestCount++; if(Ajax.activeRequestCount > 0) { $$('select').invoke('hide'); var windowSize = getPageSize(); var overlayWidth = windowSize.width + windowSize.scrollLeft; var overlayHeight = windowSize.height + windowSize.scrollTop; $('overlay').setStyle({left: '0px' , top: '0px', width: overlayWidth+'px' , height: overlayHeight+'px'}); var loadingLeft = windowSize.width / 2 - 100 + windowSize.scrollLeft; var loadingTop = windowSize.height / 2 - 9 + windowSize.scrollTop; $('loading').setStyle({left: loadingLeft+'px' , top: loadingTop+'px'}); new Effect.Appear('overlay', {duration:0.4, from:0.0, to:0.9}); new Effect.Appear('loading', {duration:0.4, from:0.0, to:1}); } } responderOnComplete = function() { Ajax.activeRequestCount--; if(Ajax.activeRequestCount <= 0) { $$('select').invoke('show'); new Effect.Fade('overlay', {duration:0.4}); new Effect.Fade('loading', {duration:0.4}); } } Ajax.Responders.register( { onCreate: responderOnCreate, onComplete: responderOnComplete });
j'utilise le code suivant:
mais l'appel à unregister ne fonctionne pas, les fonctions responderOnCreate et responderOnComplete sont toujours appelées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function displayPopup(url, parameters, title, width, height) { $('popupContent').update(); parameters.set('AjaxCall',1); Ajax.Responders.unregister(responderOnCreate); Ajax.Responders.unregister(responderOnComplete); ... }
Dans la doc de prototype il est dit:
Il me semble que c'est ce que je fais quand j'utilise responderOnCreate et responderOnComplete, comme ca ne fonctionne pas je pense que ce n'est pas la bonne solution.Unregister: remember the reference…
As always, unregistering something requires you to use the very same object you used at registration. So if you plan on unregistering a responder, be sure to define it first, then pass the reference to register, and finally, when the time comes, to unregister.
Quelqu'un peut il m'expliquer comment faire fonctionner Ajax.Responders.unregister
Merci d'avance








Répondre avec citation
Partager