Я пишу прокси для XMLHttpRequest
s, чтобы заставить их вернуть определенный код состояния. Я могу запускать функции на прокси, но установка завершается с ошибкой TypeError: Illegal Invocation
. В приведенном ниже примере это происходит в строке oReq.responseType = "json";
. Это работает, если эта строка удалена, но мне нужно иметь возможность установить свойства XHR.
XMLHttpRequest = new Proxy(XMLHttpRequest, {
construct:function(t,a){
const req = new t();
return new Proxy(req, {
get:function(o,p){
if(p=='status')return 9001
return typeof o[p] == 'function'?o[p].bind(o):o[p]
},
set: function(target, prop, value, receiver) {
Reflect.set(target, prop, value, receiver)
return true;
},
})
}
})
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", transferComplete);
oReq.addEventListener("error", transferComplete);
oReq.open("GET", "https://blossom-emery.glitch.me/yo.json");
oReq.responseType = "json"; // TypeError: Illegal Invocation
oReq.send()
console.log(oReq)
function transferComplete(evt) {
console.log(evt);
console.log(oReq.status,oReq.response);
}