var
origin
=
{
open
:
XMLHttpRequest
.
prototype
.
open
,
send
:
XMLHttpRequest
.
prototype
.
send
XMLHttpRequest
.
prototype
.
open
=
function
(
a
,
b
)
{
this
.
addEventListener
(
'load'
,
replaceFn
)
origin
.
open
.
apply
(
this
,
arguments
)
XMLHttpRequest
.
prototype
.
send
=
function
(
a
,
b
)
{
origin
.
send
.
apply
(
this
,
arguments
)
function
replaceFn
(
obj
)
{
console
.
log
(
'监听'
,
this
)
listen
(
)
* 页面接口请求监控
function
recordHttpLog
(
)
{
function
ajaxEventTrigger
(
event
)
{
var
ajaxEvent
=
new
CustomEvent
(
event
,
{
detail
:
this
console
.
log
(
'ajaxEvent'
,
ajaxEvent
)
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
)
return
realXHR
window
.
XMLHttpRequest
=
newXHR
recordHttpLog
(
)
function listen() { var origin = { open: XMLHttpRequest.prototype.open, send: XMLHttpRequest.prototype.send } XMLHttpRequest.prototype.open = function(a, b) { // console.log('open'); // this.addEventListener('loadend', onReadyStateCh