pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

      <bdo id='zGEMX'></bdo><ul id='zGEMX'></ul>
  • <tfoot id='zGEMX'></tfoot>

        <i id='zGEMX'><tr id='zGEMX'><dt id='zGEMX'><q id='zGEMX'><span id='zGEMX'><b id='zGEMX'><form id='zGEMX'><ins id='zGEMX'></ins><ul id='zGEMX'></ul><sub id='zGEMX'></sub></form><legend id='zGEMX'></legend><bdo id='zGEMX'><pre id='zGEMX'><center id='zGEMX'></center></pre></bdo></b><th id='zGEMX'></th></span></q></dt></tr></i><div class="a2g8w2g" id='zGEMX'><tfoot id='zGEMX'></tfoot><dl id='zGEMX'><fieldset id='zGEMX'></fieldset></dl></div>
        <legend id='zGEMX'><style id='zGEMX'><dir id='zGEMX'><q id='zGEMX'></q></dir></style></legend>

      1. <small id='zGEMX'></small><noframes id='zGEMX'>

        猴子補丁 XMLHTTPRequest.onreadystatechange

        Monkey patch XMLHTTPRequest.onreadystatechange(猴子補丁 XMLHTTPRequest.onreadystatechange)
          <tbody id='4GAqW'></tbody>
          <tfoot id='4GAqW'></tfoot>
        1. <small id='4GAqW'></small><noframes id='4GAqW'>

            <bdo id='4GAqW'></bdo><ul id='4GAqW'></ul>
              • <i id='4GAqW'><tr id='4GAqW'><dt id='4GAqW'><q id='4GAqW'><span id='4GAqW'><b id='4GAqW'><form id='4GAqW'><ins id='4GAqW'></ins><ul id='4GAqW'></ul><sub id='4GAqW'></sub></form><legend id='4GAqW'></legend><bdo id='4GAqW'><pre id='4GAqW'><center id='4GAqW'></center></pre></bdo></b><th id='4GAqW'></th></span></q></dt></tr></i><div class="smc2ysk" id='4GAqW'><tfoot id='4GAqW'></tfoot><dl id='4GAqW'><fieldset id='4GAqW'></fieldset></dl></div>

                <legend id='4GAqW'><style id='4GAqW'><dir id='4GAqW'><q id='4GAqW'></q></dir></style></legend>

                  本文介紹了猴子補丁 XMLHTTPRequest.onreadystatechange的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  猴子如何修補 XMLHTTPRequestonreadystatechange 函數.我正在嘗試添加一個函數,當從頁面發出的每個 ajax 請求都返回時將調用該函數.

                  How would go about monkey patching the XMLHTTPRequest's onreadystatechange function. I'm trying to add a function that would be called when every ajax request made from a page come back.

                  我知道這聽起來很糟糕,但用例卻很奇特.我想將某個 SDK 與控制臺 (jqconsole) 一起使用,但在控制臺中顯示 ajax 調用的狀態和結果,而無需修改外部 SDK.

                  I know this sounds like a terrible idea, but the use case is quite peculiar. I want to use a certain SDK with a console (jqconsole) but show status and results from ajax calls within the console without modifying the external SDK.

                  我查看了 這篇文章,其中包含大量信息,但沒有任何內容猴子修補回調似乎超出了我的 JavaScript 技能.

                  I've looked at this post which had great info, but nothing on monkey patching the callback which seem to exceed my JavaScript skills.

                  P.S 不能使用 jQuery,因為它只支持由 jQuery 而不是直接來自 XMLHTTPRequests 的 ajax 調用,這里就是這種情況.

                  P.S Can't use jQuery since it only supports ajax calls made from jQuery not from XMLHTTPRequests directly which is the case here.

                  推薦答案

                  要猴子補丁XMLHttpRequest,你需要知道一個AJAX請求一般是如何構造的:

                  To monkey-patch XMLHttpRequests, you need to know how an AJAX request is generally constructed:

                  1. 構造函數調用
                  2. 準備請求(setRequestHeader(), open())
                  3. 發送請求(.send).

                  通用補丁

                  (function(xhr) {
                      function banana(xhrInstance) { // Example
                          console.log('Monkey RS: ' + xhrInstance.readyState);
                      }
                      // Capture request before any network activity occurs:
                      var send = xhr.send;
                      xhr.send = function(data) {
                          var rsc = this.onreadystatechange;
                          if (rsc) {
                              // "onreadystatechange" exists. Monkey-patch it
                              this.onreadystatechange = function() {
                                  banana(this);
                                  return rsc.apply(this, arguments);
                              };
                          }
                          return send.apply(this, arguments);
                      };
                  })(XMLHttpRequest.prototype);
                  

                  前面假設 onreadystatechange 已分配給 onreadystatechange 處理程序.為簡單起見,我沒有包含 其他事件的代碼,例如加載.另外,我沒有考慮使用 addEventListener 添加的事件.

                  The previous assumed that onreadystatechange was assigned to the onreadystatechange handler. For simplicity, I didn't include the code for other events, such as onload. Also, I did not account for events added using addEventListener.

                  之前的補丁針對所有請求運行.但是,如果您只想將補丁限制為特定請求怎么辦?具有特定 URL 或異步標志和特定請求正文的請求?

                  The previous patch runs for all requests. But what if you want to limit the patch to a specific request only? A request with a certain URL or async flag and a specific request body?

                  示例:攔截所有請求正文中包含TEST"的POST請求

                  Example: Intercepting all POST requests whose request body contains "TEST"

                  (function(xhr) {
                      function banana(xhrInstance) { // Example
                          console.log('Monkey RS: ' + xhrInstance.readyState);
                      }
                      // 
                      var open = xhr.open;
                      xhr.open = function(method, url, async) {
                          // Test if method is POST
                          if (/^POST$/i.test(method)) {
                              var send = this.send;
                              this.send = function(data) {
                                  // Test if request body contains "TEST"
                                  if (typeof data === 'string' && data.indexOf('TEST') >= 0) {
                                      var rsc = this.onreadystatechange;
                                      if (rsc) {
                                          // Apply monkey-patch
                                          this.onreadystatechange = function() {
                                              banana(this);
                                              return rsc.apply(this, arguments);
                                          };
                                      }
                                  }
                                  return send.apply(this, arguments);
                              };
                          }
                          return open.apply(this, arguments);
                      };
                  })(XMLHttpRequest.prototype);
                  

                  使用的主要技術是透明重寫使用...

                  The main techniques used is the transparent rewrite using...

                  var original = xhr.method; 
                  xhr.method = function(){
                      /*...*/;
                      return original.apply(this, arguments);
                  };
                  

                  我的示例非常基本,可以擴展以滿足您的確切愿望.不過,這取決于您.

                  My examples are very basic, and can be extended to meet your exact wishes. That's up to you, however.

                  這篇關于猴子補丁 XMLHTTPRequest.onreadystatechange的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Browser waits for ajax call to complete even after abort has been called (jQuery)(即使在調用 abort (jQuery) 之后,瀏覽器也會等待 ajax 調用完成)
                  JavaScript innerHTML is not working for IE?(JavaScript innerHTML 不適用于 IE?)
                  XMLHttpRequest cannot load, No #39;Access-Control-Allow-Origin#39; header is present on the requested resource(XMLHttpRequest 無法加載,請求的資源上不存在“Access-Control-Allow-Origin標頭) - IT屋-程序員軟件開發技術分
                  Is it possible for XHR HEAD requests to not follow redirects (301 302)(XHR HEAD 請求是否有可能不遵循重定向 (301 302))
                  NETWORK_ERROR: XMLHttpRequest Exception 101(NETWORK_ERROR:XMLHttpRequest 異常 101)
                  XMLHttpRequest 206 Partial Content(XMLHttpRequest 206 部分內容)

                    <tbody id='acrh7'></tbody>
                    1. <i id='acrh7'><tr id='acrh7'><dt id='acrh7'><q id='acrh7'><span id='acrh7'><b id='acrh7'><form id='acrh7'><ins id='acrh7'></ins><ul id='acrh7'></ul><sub id='acrh7'></sub></form><legend id='acrh7'></legend><bdo id='acrh7'><pre id='acrh7'><center id='acrh7'></center></pre></bdo></b><th id='acrh7'></th></span></q></dt></tr></i><div class="2k20om2" id='acrh7'><tfoot id='acrh7'></tfoot><dl id='acrh7'><fieldset id='acrh7'></fieldset></dl></div>

                        <bdo id='acrh7'></bdo><ul id='acrh7'></ul>

                          <small id='acrh7'></small><noframes id='acrh7'>

                          <legend id='acrh7'><style id='acrh7'><dir id='acrh7'><q id='acrh7'></q></dir></style></legend>

                            <tfoot id='acrh7'></tfoot>
                            主站蜘蛛池模板: 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 成都租车_成都租车公司_成都租车网_众行宝 | 南京欧陆电气股份有限公司-风力发电机官网 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 焦作网 WWW.JZRB.COM| 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 实体店商新零售|微赢|波后|波后合作|微赢集团 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 内六角扳手「厂家」-温州市威豪五金工具有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 |