Sto cercando di creare uno script che funga da proxy/wrapper per l'oggetto nativo XMLHttpRequest
che mi consente di intercettarlo, modificare il responseText e tornare all'evento originale onreadystatechange.Intercept XMLHttpRequest e modifica responseText
Il contesto di essere, se i dati l'applicazione sta cercando di ricevere è già disponibile in memoria locale, per interrompere il XMLHttpRequest
e passare i dati memorizzati localmente nuovamente dentro i metodi di callback apps successo/insuccesso. Supponiamo che non abbia alcun controllo sulle app esistenti metodi di callback AJAX.
avevo inizialmente provato la seguente idea ..
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
//Do some stuff in here to modify the responseText
send.call(this, data);
};
Ma, come ho ormai consolidata, il responseText è di sola lettura.
Allora ho provato facendo un passo indietro, scrivere il mio delega nativa per XMLHttpRequest
, in ultima analisi, di finire a scrivere la mia versione dei metodi nativi. Simile a quello che viene discusso qui ...
http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping
Ma rapidamente ottenuto confuso, e avere ancora la difficoltà di restituire i dati modificati di nuovo nel metodo originale onReadyStateChange
.
Qualche suggerimento? È possibile?
Questo era eccessivo per quello di cui avevo bisogno, ma la chiave che mi portava era "var rawOpen = XMLHttpRequest.prototype.open;" e "rawOpen.apply (this, arguments);", che mi permetteva di collegare il mio override (come si mostra), ma lascia comunque passare la chiamata normalmente, in modo che il chiamante non sappia nulla di diverso. –