我坚持修改对象。是否可以修改XMLHttpRequest并且可以将其实现到我的代码中吗?我搜索了很多,无法找到答案或tuturial。
代码:
(function() {
var origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(data, url, async) {
data = data.toLowerCase();
if(data === 'post' || data === 'get'){
this.addEventListener('load', function() {
url = url.toString();
if(String(url)){
var newUrl = url.split('index.php?id=').pop();
newUrl = newUrl.split('&');
if(isNumber(newUrl[0]) && newUrl[0] !== '115' && newUrl[0] !== '9' && newUrl[0] !== '152' && newUrl[0] !== '143' && newUrl[0] !== '2' && newUrl[0] !== '96'){
var checked = AccessDenied(newUrl[0]);
if(checked === false){
//Here comes code to modify data
}
}
}
});
};
origOpen.apply(this, arguments);
};
})();
答案 0 :(得分:1)
您所采用的这种方法与bulit内开放方法确实存在冲突!因此,在这种情况下,内置胜算是默认方法。您应命名为open2
或Open
或_open
或根据需要避免冲突。但是请记住,您不能使用XMLHttpRequest
中已经存在的任何方法!这是一个例子。
XMLHttpRequest.prototype._open = function(data, url, async) { //...code };