我怎样才能覆盖XMLHttpRequest.open()
方法然后捕获并改变它的参数?
我已经尝试过代理方法,但它不起作用,尽管删除了打开覆盖XMLHttpRequest()
被称为:
(function() {
var proxied = window.XMLHttpRequest.open;
window.XMLHttpRequest.open = function() {
$('.log').html(arguments[0]);
return proxied.apply(this, arguments);
};
})();
您没有修改open
方法继承自XMLHttpRequest objects
但只是添加一个方法XMLHttpRequest constructor
实际上从未使用过。
我在 facebook 中尝试了这段代码,并且能够捕获请求:
(function() {
var proxied = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function() {
console.log( arguments );
return proxied.apply(this, [].slice.call(arguments));
};
})();
/*
["POST", "/ajax/chat/buddy_list.php?__a=1", true]
["POST", "/ajax/apps/usage_update.php?__a=1", true]
["POST", "/ajax/chat/buddy_list.php?__a=1", true]
["POST", "/ajax/canvas_ticker.php?__a=1", true]
["POST", "/ajax/canvas_ticker.php?__a=1", true]
["POST", "/ajax/chat/buddy_list.php?__a=1", true]
*/
所以是的,需要添加 open 方法XMLHttpRequest prototype
(window.XMLHttpRequest.prototype) 不是XMLHttpRequest constructor
(窗口.XMLHttpRequest)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)