【发布时间】:2013-06-02 07:12:19
【问题描述】:
我正在尝试构建一个脚本,它将充当本机 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方法。
有什么建议吗?这甚至可能吗?
【问题讨论】:
标签: javascript ajax xmlhttprequest