IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Abort sous IE


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Abort sous IE
    Bonjour,

    J'essaye de faire un arrêt de requête AJAX en cours. En effet j'ai une requête assez longue, lorsque l'utilisateur veux cliquer sur un lien pour aller sur une autre page. IE attend que la requête soit aboutit pour me passer à la page suivante...

    Sous FireFox, je n'ai pas le soucis, lorque je clique sur le lien, il passe directement à la page suivante sans attendre ...

    Je lance cette requête qui peut-être assez longue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var myAjaxSynFic = new Ajax.Updater("syntheseFichiers", 
    		   "accueil.listerSyntheseFichiers.do", 
    			{method: 'post',
    			parameters: {nocache: Math.random()},
    			onSuccess: function(){hide("syntheseFicBox");}});
    Afin de contrôler le départ de ma page et lancer l'arrêt de la requête, j'ai ajouter une fonction titi, qui se lance dès que je quitte la page :
    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
    40
    41
    42
     
    	    function titi() {
    	    	alert("OUahhhhhh");
    	    	var value = Ajax.activeRequestCount;
    	    	alert("Avant la sortie :"+value);
    	    	alert("Lancement requête myAjaxSynAnoRea");
    	    	if(typeof(myAjaxSynAnoRea)=='undefined'){ 
    	    		alert('Variable maVariable indéfinie'); 
    	    	} else {
    		    	myAjaxSynAnoRea.abort();
    		    	var value = Ajax.activeRequestCount;
    		    	alert("Avant la sortie :"+value);
    	    	} 	  
    	    	alert("Lancement requête myAjaxSynAnoPre");
    	    	if(typeof(myAjaxSynAnoPre)=='undefined'){ 
    	    		alert('Variable maVariable indéfinie'); 
    	    	} else {
    	    		myAjaxSynAnoPre.abort();
    		    	var value = Ajax.activeRequestCount;
    		    	alert("Avant la sortie :"+value);
    	    	} 	    	  			    	
    	    }
     
    	    /**
    	    *	Ajax.Request.abort * extend the prototype.js Ajax.Request object so that it supports an abort method
    	    */
    	    Ajax.Updater.prototype.abort = function() {    
    	    	 // prevent and state change callbacks from being issued    
    	    	 //this.transport.onreadystatechange = Prototype.emptyFunction;    
    	    	 // abort the XHR    
    	    	 //this.transport.abort();   
     
    	    	    // avoid MSIE/Mozilla calling other event handlers when aborted 
    	    	    this.transport.onreadystatechange = Prototype.emptyFunction;     
    	    	    this.transport.abort();     
    	    	    this._complete = true;     
    	    	    this.aborted = true;     
    	    	    var response = new Ajax.Response(this);     
    	    	    Ajax.Responders.dispatch('onAbort', this, response, response.headerJSON);     	  
    	    	  // update the request counter    
    	    	Ajax.activeRequestCount--;
    	    };
    Cependant, malgré la requête mis en abort, IE continue toujours d'attendre une réponse ...

    Si qqun a déjà rencontré ce problème et a trouvé une solution ?

    En vous remerciant par avance.

    Michael.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Salut !

    J'imagine que tu as déjà lu cet article. Vois le commentaire du dénommé Carl :

    «Its very likely that this hasn't been included in prototype because the abort method in XHR isn't supported by IE<7. Great addition though and when combined with a little object detection there's no reason it cant be implemented as a progressive enhancement»

    («C'est très probable que l'on n'en trouve aucune implémentation dans prototype.js car la méthode "abort" d'XMLHTTPRequest n'est pas supportée dans les version d'IE < 7. [...]»)

    Avec quel version as-tu fais le test ?

    Autrement es-tu sûr qu'aucune exception ne soit levée lors de ton appel à "abort" ? Sinon peut-être qu'elle passe à la trappe et que tu ne vois pas la réelle cause de ton problème. Utilises-tu le callback "onAbort" définit dans ton extension de Ajax.Updater ? Si tu y branches qqchose, est-ce appelé quand tu procèdes à l'arrêt de ta requête ? (j'imagine que non).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Je te remercie de ta réponse.

    Alors oui j'ai lu le blog que tu as mis en évidence dans ton dernier post. C'est à partir de cela que j'ai essayé de trouver le pourquoi du comment !

    J'utilise actuellement IE6 et IE7, les 2 fonds le même bazar.

    J'ai utilisé DebugBar pour essayer d'en savoir plus, ce que je vois c'est que IE recoit bien l'abort, mais la requêtes n'a pas de réponse, donc il continue à touner.

    Après plusieurs recherches, j'ai, on va dire changé de solution, mais qui ne me satisfait pas.

    C'est à dire que j'ai 2 requêtes assez longues qui tournent, ces 2 requêtes (lancées en même temps) bloquent IE comme décrit précédemment. Si je les fait succéder l'une après l'autre, ou si j'en utilise qu'une seule. Le problème ne se manifeste plus ...

    Ainsi, il y a bien un petit soucis, mais je n'arrive pas à savoir, si cela est du à IE ou à mes devs ...

    Merci

    Michael.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Salut !

    C'est assez étrange, en effet. Utilises-tu bien le mode asynchrône ?

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  3. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45
  4. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo