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

JavaScript Discussion :

Capture évenements Ajax d'une page (IE8)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Erythrée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut Capture évenements Ajax d'une page (IE8)
    Salut à tous !
    Je suis en train de faire pas mal de recherche pour voir comment je peux capturer/écouter tous les événements Ajax d'une page.


    L'idée:
    A tout moment je veux savoir les événements Ajax qui ont eu lieu sur la page depuis la connexion d'un utilisateur.
    Je souhaite récupérer l'URL appelée, les données passées et c'est tout.
    En gros, ce que je veux ressemble fortement à Firebug >> Onglet Réseau >> XHR. Cependant je ne veux pas l'utiliser AVEC firebug mais le faire moi même car ce que je veux faire doit fonctionner sous IE8...

    J'ai déjà parcouru un graaaand nombre de forums et de posts. Surtout sur stackoverflow où j'ai trouvé des post intéressants comme :
    http://stackoverflow.com/questions/191 [...] ascript-in-ie
    ou encore sur d'autres sites :
    http://www.ilinsky.com/articles/XMLHttpRequest/

    J'ai également analysé un peu les sources de firebug (ici -> http://code.google.com/p/fbug/source/b [...] et.js?r=11024) mais j'avoue que c'est costaud quand même !

    Voilà donc mon problème...
    Si vous avez des idées, des pistes, des liens ou une explication je suis preneur !
    Merci d'avance

    à bientôt

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il n'y a pas d'événement généré sur un appel ajax au niveau de la page.

    il te faut donc encapsuler TOUS les appel à xhr et généré toi même les événements que tu veux voir

    A+JYT

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Erythrée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut
    Ok Sekaijin merci !

    Cependant sur ie8 et firefox j'ai déjà essayé.
    Sous Firefox ça fonctionne mais pas sous ie8.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    //cf : http://stackoverflow.com/questions/3596583/javascript-detect-an-ajax-event
    var s_ajaxListener = new Object();
     
    alert(s_ajaxListener);//OK
    alert(XMLHttpRequest);//OK
     
     
    s_ajaxListener.tempOpen = (XMLHttpRequest.prototype.open );
    s_ajaxListener.tempSend = (XMLHttpRequest.prototype.send );
     
    //alert(s_ajaxListener.tempOpen);//ok
     
    // this.method :the ajax method used
    // this.url    :the url of the requested script (including query string, if any) (urlencoded) 
    // this.data   :the data sent, if any ex: foo=bar&a=b (urlencoded)
    s_ajaxListener.callback = function () {
        //myAjaxHandler(this);
       $('body').prepend('AJAX: url=' + this.url+' method = '+this.data+'<br />');
    }
     
    //OPEN
    XMLHttpRequest.prototype.open = function(a,b) {
        if (!a){
    	var a='';
        }
        if (!b){
    	var b='';
        }
     
        s_ajaxListener.tempOpen.apply(this, arguments);
        s_ajaxListener.method = a;  
        s_ajaxListener.url = b;
     
        if (a.toLowerCase() == 'get') {
    	s_ajaxListener.data = b.split('?');
    	s_ajaxListener.data = s_ajaxListener.data[1];
        }
    }
     
    //SEND
    XMLHttpRequest.prototype.send = function(a,b) {
        if (!a){
    	var a='';
        }
        if (!b){
    	var b='';
        }
        s_ajaxListener.tempSend.apply(this, arguments);
     
        if(s_ajaxListener.method.toLowerCase() == 'post'){
    	s_ajaxListener.data = a;
        }
     
        s_ajaxListener.callback();
    }
    Je pense que c'est lié au fait que sous IE c'est un objet ActiveX et pas xmlHttpRequest.

    Mais je n'ai pas trouvé de solution pour que ça fonctionne sous IE...

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonsoir,
    $('body').prepend('AJAX: url=' + this.url+' method = '+this.data+'<br />');
    si tu utilises une bibliothéque pourquoi ne pas l'utiliser complétement

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Si tous tes appels ajax se font avec jquery, tu peux très bien utiliser les évènement ajaxStop et ajaxStart que tu mets sur 'body'

Discussions similaires

  1. Chargement Ajax d'une page
    Par cbalmefrezol dans le forum jQuery
    Réponses: 2
    Dernier message: 17/03/2009, 10h43
  2. Comment capturer le contenu d'une page web avec asp.net et c#
    Par mehdi_scofield dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/10/2008, 16h34
  3. [AJAX] ajax dans une page ajax.
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/09/2008, 10h28
  4. (AJAX) charger une page aspx dans un div
    Par divinThomas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/04/2008, 13h12
  5. [Prototype] Rafraîchissement AJAX d'une page contenant du js
    Par Core8 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 27/06/2007, 11h11

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