История изменений
Исправление Goganchic, (текущая версия) :
а разве send не асинхронный? т.е. после вызова оригинального send ничего ж не поменяется сразу, а при изменении состояния приходит колбек onreadystatechange. Его и надо менять. Например так:
function setXMLRequestCallback(callback) {
XMLHttpRequest.callback = callback;
const oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
const origCallback = this.onreadystatechange;
this.onreadystatechange = () => {
XMLHttpRequest.callback({
status: this.status,
url: this.responseURL,
text: this.responseText,
object: this
});
}
oldSend.apply(this, arguments);
}
Исходная версия Goganchic, :
а разве send не асинхронный? т.е. после вызова оригинального send ничего ж не поменяется сразу, а при изменении состояния приходит колбек onreadystatechange. Его и надо менять. Например так:
function setXMLRequestCallback(callback) {
let oldSend;
XMLHttpRequest.callback = callback;
const oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
const origCallback = this.onreadystatechange;
this.onreadystatechange = () => {
XMLHttpRequest.callback({
status: this.status,
url: this.responseURL,
text: this.responseText,
object: this
});
}
oldSend.apply(this, arguments);
}