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
Partager