На веб-странице с добавленным расширением пользовательским классом XMLHttpRequest
мне нужно перехватить и изменить определенные ответы до того, как событие load
будет вызвано в остальной части документа. Прямо сейчас мой код модификации реагирует на событие загрузки. Как бы я использовал функцию для изменения ответа до того, как произошло событие load
?
Это код, который я использую:
let oldXHROpen = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
var originalresp = this;
//Do something with the method, url and etc.
originalresp.addEventListener('load', async function () {
//Do something with the response text
//***This function needs to execute before load is raised for the rest of the document***
value = '<note><body>This is a test XML document.</body></note>';
parser = new DOMParser();
apiresponsexml = parser.parseFromString(value, 'application/xml');
//Replace data in the response
Object.defineProperties(originalresp, {
'response': {
value: value
},
'responseXML': {
value: apiresponsexml,
},
'responseText': {
value: value,
}
});
});
return oldXHROpen.apply(originalresp, arguments);
};
Этот вопрос является продолжением этой предыдущей темы .