7
votes

Patch de singe xmlhttprecest.onreadyStatechange

Comment ira à propos du singe corrigé le XMLHTTPQUEST 'S onreadyStatechange fonction. J'essaie d'ajouter une fonction qui serait appelée lorsque chaque demande AJAX faite à partir d'une page revient.

Je sais que cela ressemble à une idée terrible, mais le cas d'utilisation est assez particulier. Je souhaite utiliser un certain SDK avec une console (JQConsole), mais Afficher le statut et les résultats des appels AJAX dans la console sans modifier le SDK externe.

J'ai regardé Cet article qui avait de superbes infos, mais rien sur Monkey corrige le rappel qui semblent dépasser mes compétences JavaScript.

P.s ne peut pas utiliser jQuery car il ne prend en charge que les appels AJAX à partir de jQuery pas de XMLHTTPQUESTS directement, ce qui est le cas ici.


0 commentaires

3 Réponses :


0
votes

En supposant que vous puissiez ignorer IE ...

//Totally untested code, typed at the SO <textarea>... but the concept *should* work, let me know if it doesn't.
var OldXMLRequest = XMLHttpRequest;

// Create a new instance
function XMLHttpRequest() {
  var ajax = new OldXMLRequest();

  // save old function
  var f = ajax.onreadystatechange;
  ajax.onreadystatechange = function() {
    console.log("Whatever!");
    f(); // Call the old function
  }
  return ajax;
}


1 commentaires

1. Lorsque l'objet xhr est construit, il n'y a certainement aucun ReadyStatechange manutention d'événement. 2. Lorsque vous appelez la méthode avec f () , le contexte est perdu: Ceci doit être l'instance XHR, pas fenêtre ou ou ou indéfini .



12
votes

à monkey-patch xmlhttprequest code> s, vous devez savoir comment une demande AJAX est généralement construite:

  1. Invocation du constructeur Li>
  2. Préparez la demande ( Setrequestheader () Code>, Ouvrir () CODE>) LI>
  3. Envoi de la demande ( .Send code>). li> OL>

    PATCH GÉNÉMENTAL H2>
    var original = xhr.method; 
    xhr.method = function(){
        /*...*/;
        return original.apply(this, arguments);
    };
    


0 commentaires

0
votes

Vous pouvez apprendre de Ajax-Hook écrit par chinois!

Il s'agit d'un JS avancé pour activer la touche de singe XMLHTTPQUEST


0 commentaires