Próbuję utworzyć skrypt, który będzie działać jako proxy/opakowanie dla natywnego obiektu XMLHttpRequest
, umożliwiając mi przechwycenie go, zmodyfikowanie obiektu responseText i powrót do pierwotnego zdarzenia onreadystatechange.Przechwytuj XMLHttpRequest i zmodyfikuj tekst odpowiedzi
Kontekst oznacza, że jeśli dane, które aplikacja próbuje uzyskać, są już dostępne w pamięci lokalnej, należy przerwać proces XMLHttpRequest
i przekazać lokalnie przechowywane dane z powrotem do metod wywołania zwrotnego sukcesu/niepowodzenia aplikacji. Załóżmy, że nie mam żadnej kontroli nad aplikacjami istniejącymi metodami oddzwaniania AJAX.
miałem pierwotnie próbowali następujący pomysł ..
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
//Do some stuff in here to modify the responseText
send.call(this, data);
};
Ale jak mam teraz nawiązane, responseText jest tylko do odczytu.
Potem spróbowałem zrobić krok do tyłu, pisząc własne pełne natywne proxy do XMLHttpRequest
, ostatecznie kończąc pisanie własnej wersji natywnych metod. Podobny do tego, co jest omawiane tutaj ...
http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping
Ale to szybko dostaje mylące, a wciąż mają trudności z powrotem zmienione dane z powrotem do oryginalnego onReadyStateChange
metody.
Wszelkie sugestie? Czy to możliwe?
To była przesada dla tego, czego potrzebowałem, ale kluczowym wyjściem dla mnie było 'var rawOpen = XMLHttpRequest.prototype.open;' i 'rawOpen.apply (this, arguments);', które pozwoliło mi podłączyć moje własne nadpisanie (jak pokazano), ale nadal pozwala na normalne przekazywanie połączenia, aby dzwoniący nie wiedział nic innego. –