我试图将 javascript 注入网页并捕获所有的 ajax 请求。
function addXMLRequestCallback(send_callback) {
var oldSend, i;
if(XMLHttpRequest.send_callbacks) {
XMLHttpRequest.send_callbacks.push(send_callback);
} else {
XMLHttpRequest.send_callbacks = [send_callback];
oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
for (i = 0; i < XMLHttpRequest.send_callbacks.length; i++) {
XMLHttpRequest.send_callbacks[i](this, arguments);
}
oldSend.apply(this, arguments);
}
}
}
*从某处复制
这个函数允许我捕获所有的 send() 事件,但我也想捕获 XMLHttpRequest.responseText,这需要 XMLHttpRequest.onload。上述方法不适用于 XMLHttpRequest.onload,因为它不是真正的函数,直接将函数分配给 onload 事件最终会被使用该实例的其他脚本覆盖。
有没有一种方法可以将回调分配给 onload 事件而不会被覆盖?