我正在尝试构建一个脚本,该脚本将充当本机XMLHttpRequest
对象的代理/包装器,使我能够拦截它、修改 responseText 并返回到原始的 onreadystatechange 事件。
上下文是,如果应用程序尝试接收的数据已在本地存储中可用,则中止XMLHttpRequest
并将本地存储的数据传递回应用程序成功/失败回调方法。假设我无法控制应用程序现有的 AJAX 回调方法。
我最初尝试过以下想法..
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
//Do some stuff in here to modify the responseText
send.call(this, data);
};
但正如我现在所建立的,responseText 是只读的。
然后我尝试退后一步,编写我自己的完整本机代理到XMLHttpRequest
,最终编写我自己的本机方法版本。类似于这里讨论的...
http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping
但是它很快就变得混乱了,并且仍然很难将修改后的数据返回到原始onReadyStateChange
方法中。
有什么建议么?这甚至可能吗?