js监听ajax请求事件

你可以用这个做很多事情,例如对要ajax的请求链接统一进行加密,统计,修改
也可以用于APP的混合开发中,在他人的网页中添加监听ajax的代码,从而获取他的ajax内容

(function(){
	var oldXHR							= window.XMLHttpRequest;
			window.XMLHttpRequest		= function(){/* 重定义默认的XMLHttpRequest方法,增加了监听 */
				var realXHR				= new oldXHR(),
					ajaxEventTrigger	= function(event, name){
						window.dispatchEvent(
							new CustomEvent(name, {detail: event})/* 创建一个事件 */
						);/* 触发/派发这个事件 */
					};
				realXHR.addEventListener('abort',			function(){ajaxEventTrigger(this, 'ajaxAbort');				}, false);/* 中止请求时触发 */
				realXHR.addEventListener('error',			function(){ajaxEventTrigger(this, 'ajaxError');				}, false);/* 请求错误时触发 */
				realXHR.addEventListener('load',			function(){ajaxEventTrigger(this, 'ajaxLoad');				}, false);/* 请求成功时触发 */
				realXHR.addEventListener('loadstart',		function(){ajaxEventTrigger(this, 'ajaxLoadStart');			}, false);/* 客户端开始发出请求 */
				realXHR.addEventListener('progress',		function(){ajaxEventTrigger(this, 'ajaxProgress');			}, false);/* 服务器已经响应,处理请求中触发 */
				realXHR.addEventListener('timeout',			function(){ajaxEventTrigger(this, 'ajaxTimeout');			}, false);/* 超时触发 */
				realXHR.addEventListener('loadend',			function(){ajaxEventTrigger(this, 'ajaxLoadEnd');			}, false);/* 请求不管成功失败中止都将最后触发 */
				realXHR.addEventListener('readystatechange',function(){ajaxEventTrigger(this, 'ajaxReadyStateChange');	}, false);/* readyState 改变时触发 */
				return realXHR;
			};
})();
window.addEventListener('ajaxLoad', function ajaxLoad(e){
	console.log(e);
	window.removeEventListener('ajaxLoad', ajaxLoad);//实现监听一次后,立刻删除
});

xhr = new window.XMLHttpRequest;
xhr.open('GET','https://baidu.com');//打开一个请求
xhr.send();

原链接 https://www.cnblogs.com/jackzhoumine/p/6562890.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值