监听ajax请求,JavaScript监听全部ajax请求的事件

最近在做一个项目,其中需要监听页面中不可控代码调用 ajax 请求的事件,比如说监听调用 XHR 后的 onreadystatechange、onload、onloadstart 等事件。

嗯,主要是用原生的 JavaScript 实现。查了挺多资料的,大概的做法是:

1、Pub/Sub,也就是 https://github.com/cowboy/jquery-tiny-pubsub 这个 jQuery 插件。但是因为调用 ajax 请求的代码不可控,无法添加 publish,或者说我不会添加?

2、jQuery 的 bind 和 trigger,同上,代码不可控

3、如果是用 jQuery 实现的,可以直接监听其 ajaxCompete 等事件,然而调用 ajax 请求的并不是 jQuery 的 $.ajax,故此招没用

4、如果 ajax 的回调涉及到 DOM 操作,还可以使用 MutationObserver,但是最多只能知道 ajax 成功并且更新了 DOM,不能监听到 onreadystatechange 等事件

5、直接重写 XHR,配合 CustomEvent 实现

那些已被弃用或降级的方法不作考虑。

针对第五点,查找到了国外相关资料,其做法见如下代码

var open = window.XMLHttpRequest.prototype.open,

send = window.XMLHttpRequest.prototype.send,

ReadyStateChange;

function openReplacement(method, url, async, user, pass


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部