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.

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
	 });
Mon problème est le suivant, pour un type particulier d'appel (affichage d'une popup) je voudrais supprimer ce Responders .

j'utilise le code suivant:

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);
 
 ... 
}
mais l'appel à unregister ne fonctionne pas, les fonctions responderOnCreate et responderOnComplete sont toujours appelées.

Dans la doc de prototype il est dit:
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.
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.

Quelqu'un peut il m'expliquer comment faire fonctionner Ajax.Responders.unregister

Merci d'avance