为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Greasemonkey脚本拦截XMLHttpRequests?

如何从Greasemonkey脚本拦截XMLHttpRequests?

万千封印 2019-12-11 13:09:01
如何从Greasemonkey脚本拦截XMLHttpRequests?
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

可接受的答案几乎是正确的,但是可以稍作改进:


(function(open) {

    XMLHttpRequest.prototype.open = function() {

        this.addEventListener("readystatechange", function() {

            console.log(this.readyState);

        }, false);

        open.apply(this, arguments);

    };

})(XMLHttpRequest.prototype.open);

优先使用apply + arguments而不是call,因为这样您就不必显式地知道打开的所有可能改变的参数!



查看完整回答
反对 回复 2019-12-12
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

如何修改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 ;



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号