;(function(){
if(typeof window.CustomEvent === 'function') return false;
function CustomEvent(event, params) {
params = params || {bubbles: false, cancelable: false, detail: undefined};
var evt = document.createElement('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
;(function(){
function ajaxEventTrigger(event) {
var ajaxEvent = new CustomEvent(event, {detail: this});
window.dispatchEvent(ajaxEvent);
}
var oldXHR = window.XMLHttpRequest;
function newXHR() {
var realXHR = new oldXHR();
realXHR.addEventListener('abort', function() {
ajaxEventTrigger.call(this, 'ajaxAbort');
}, false);
realXHR.addEventListener('error', function() {
ajaxEventTrigger.call(this, 'ajaxError');
}, false);
realXHR.addEventListener('load', function() {
ajaxEventTrigger.call(this, 'ajaxLoad');
}, false);
realXHR.addEventListener('loadstart', function() {
ajaxEventTrigger.call(this, 'ajaxLoadStart');
}, false);
realXHR.addEventListener('progress', function() {
ajaxEventTrigger.call(this, 'ajaxProgress');
}, false);
realXHR.addEventListener('timeout', function() {
ajaxEventTrigger.call(this, 'ajaxTimeout');
}, false);
realXHR.addEventListener('loadend', function() {
ajaxEventTrigger.call(this, 'ajaxLoadEnd');
}, false);
realXHR.addEventListener('readystatechange', function() {
ajaxEventTrigger.call(this, 'ajaxReadyStateChange');
}, false);
let send = realXHR.send;
realXHR.send = function (...arg) {
var ret = send.apply(realXHR, arg);
realXHR.body = arg[0];
ajaxEventTrigger.call(realXHR, 'ajaxSend');
return ret;
}
let realOpen = realXHR.open;
realXHR.open = function (...arg) {
var ret = realOpen.apply(realXHR, arg);
realXHR.method = arg[0];
realXHR.originUrl = arg[1];
realXHR.async = arg[2];
ajaxEventTrigger.call(realXHR, 'ajaxOpen');
return ret;
}
let setRequestHeader = realXHR.setRequestHeader;
realXHR.requestHeader = {};
realXHR.setRequestHeader = function (name, value) {
realXHR.requestHeader[name] = value;
return setRequestHeader.call(realXHR, name, value);
}
return realXHR;
}
window.XMLHttpRequest = newXHR;
})();
(function(){
var filterList;
function getJson(xhr) {
try {
if(xhr.responseText){
return JSON.parse(xhr.responseText);
}else{
return JSON.parse(xhr.response);
}
} catch (error) {
console.error(error);
return null;
}
}
function resetResponse(xhr, result) {
Object.defineProperty(xhr, 'responseText', {
writable: true
}); /* 更改responseText 只读属性为可编辑属性。 */
xhr.responseText = result;
}
window.addEventListener("ajaxReadyStateChange", function(e) {
let proxyXHR = e.detail;
if(proxyXHR.readyState === 4 && proxyXHR.status === 200){
/* 在这里过滤url,并按需修改返回数据 */
// proxyXHR.getAllResponseHeaders(); /* 响应头信息 */
// proxyXHR.requestHeader; /* 请求头信息 */
// proxyXHR.responseURL; /* 请求的地址 */
// proxyXHR.responseText; /* 响应内容 */
// proxyXHR.originUrl; /* 请求的原始参数地址 */
// proxyXHR.body; /* POST 参数,GET参数在 url 上面 */
}
});
})();