Comment ira à propos du singe corrigé le 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. p>
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>
P.s ne peut pas utiliser jQuery car il ne prend en charge que les appels AJAX à partir de jQuery pas de XMLHTTPQUEST code> 'S
onreadyStatechange code> fonction. J'essaie d'ajouter une fonction qui serait appelée lorsque chaque demande AJAX faite à partir d'une page revient. p>
XMLHTTPQUESTS code> directement, ce qui est le cas ici. P>
3 Réponses :
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. Lorsque l'objet code> xhr code> est construit, il n'y a certainement aucun ReadyStatechange code> manutention d'événement. 2. Lorsque vous appelez la méthode avec
f () code>, le contexte est perdu:
Ceci code> doit être l'instance XHR, pas
fenêtre code> ou
ou
ou
indéfini code>.
à monkey-patch xmlhttprequest code> s, vous devez savoir comment une demande AJAX est généralement construite:
Setrequestheader () Code>,
Ouvrir () CODE>) LI>
.Send code>). li>
OL>
PATCH GÉNÉMENTAL H2>
var original = xhr.method;
xhr.method = function(){
/*...*/;
return original.apply(this, arguments);
};
Vous pouvez apprendre de Ajax-Hook écrit par chinois! P>
Il s'agit d'un JS avancé pour activer la touche de singe XMLHTTPQUEST P>