function XMLHttpRequestFilter(){
let base = XMLHttpRequest.prototype.open; let filter_list = []; let add = function(fun, key='_fn'){
filter_list.push([key, fun])
XMLHttpRequest.prototype.open = function(...args){
filter_list.map(x=>{
let check = x[1](args)
if(check){
throw check;
}
});
base.apply(this,args)
}
}; let remove = function(key='_fn'){
filter_list = filter_list.filter(x=>x[0]!=key);
}; let removeAll = function(){
filter_list.length=0;
XMLHttpRequest.prototype.open = base
}; return {add, remove, removeAll}
} t.add(console.log, 'k1')
t.add(console.dir, 'k2')
t.add(console.log, 'k3') t.remove('k2')
t.removeAll() t.add(console.log, "k1")
t.add(()=>"123", 'k2')
t.add(console.dir, "k1") t.remove("k2")

  

JS给XMLHttpRequest添加filter的更多相关文章

  1. js中XMLHttpRequest对象实现GET、POST异步传输

    js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...

  2. JS & JQuery 动态添加 select option

    因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以 ...

  3. Asp.net MVC3 中,动态添加filter

    Asp.net MVC3 中,动态添加filter filter是attribute,不支持泛型,传入的参数必须是固定的值.总之很受attribute本身的限制. 发现一篇老外的文章,动态设置filt ...

  4. 通过添加filter过滤器 彻底解决ajax 跨域问题

    1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-cl ...

  5. Jetty添加Filter过滤器

    1.Jetty嵌入到Spring项目 try { Server server = new Server(8080); WebAppContext context = new WebAppContext ...

  6. java项目中通过添加filter过滤器解决ajax跨域问题

    1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-cl ...

  7. Springboot添加filter方法

    在springboot添加filter有两种方式: (1).通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中 ...

  8. js改变或添加className

    js改变或添加className <style type="text/css"> .newDiv { font-weight: bold; } </style&g ...

  9. cocos2d js jsb XMLHttpRequest 中文乱码

    1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...

随机推荐

  1. WebSocket的兼容性

    https://github.com/sockjs/sockjs-client https://socket.io/ https://github.com/gimite/web-socket-js h ...

  2. 安装Mybatis插件

    http://blog.csdn.net/nextyu/article/details/69225004

  3. angular.js,IE7,8,9兼容性的处理

    转........... 这段时间详细了解了谷歌新出的MVVM框架angular.js,并直接在本人所从事的项目中使用了.但是使用新东西都是有风险的,这不,采用了新框架的页面IE7,8各种显示不出来… ...

  4. Delphi 子界类型

  5. 指针、数组与sizeof运算符

    指针.数组与sizcof运算符 (1)sizeof是c语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返同()里面的变量或者数据类型占用的内存字节数. (2)s ...

  6. python爬虫练习之批量下载zabbix文档

    # -*- coding: UTF-8 -*- import requests,re,time url = 'https://www.zabbix.com/documentation/3.4/zh/m ...

  7. 【bzoj2523】【CTSC2001】聪明的学生

    真是神仙题,做完后感觉智商提(jiang)升(di)了 这种题一般都是把局面设成状态,然后发现可以由一种状态转移到另一种状态,那就是 $dp$ 了. 但是这道题怎么设呢? 题目中给了你一个结论,一般题 ...

  8. spfa算法及判负环详解

    spfa     (Shortest Path Faster Algorithm) 是一种单源最短路径的算法,基于Bellman-Ford算法上由队列优化实现. 什么是Bellman_Ford,百度内 ...

  9. JDK代码查看--Eclipse

    除了要会查找文档,还要学会使用查看代码. 首先看一看你是否下载了源码,如果没下载就去网上下载一个版本,在Eclipse中window->Preferences->Java->Inst ...

  10. thinkPHP5.0.22初体验---request相关用法

    如果浏览器要返回美观排列的json数据,可以安装火狐浏览器的插件 返回XML的数据格式 渲染模板的用法 return $this->fetch('index/index2')效果 扒掉stirp ...