我想使用Greasemonkey捕获AJAX请求的内容.
有人知道怎么做这个吗?
接受的答案几乎是正确的,但它可能会略有改进:
(function(open) { XMLHttpRequest.prototype.open = function() { this.addEventListener("readystatechange", function() { console.log(this.readyState); }, false); open.apply(this, arguments); }; })(XMLHttpRequest.prototype.open);
更喜欢在调用时使用apply +参数,因为那样你就不必明确地知道所有打开的参数可能会改变!
如何修改XMLHttpRequest.prototype.open或发送带有替换的方法,这些替换设置自己的回调并调用原始方法?回调可以做它的事情然后调用回调指定的原始代码.
换一种说法:
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open; var myOpen = function(method, url, async, user, password) { //do whatever mucking around you want here, e.g. //changing the onload callback to your own version //call original this.realOpen (method, url, async, user, password); } //ensure all XMLHttpRequests use our custom open method XMLHttpRequest.prototype.open = myOpen ;