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>
                            主站蜘蛛池模板: 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 西安中国国际旅行社(西安国旅) | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 长城人品牌官网| 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 深圳市东信高科自动化设备有限公司| 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 湖南自考_湖南自学考试网| 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 免费网站网址收录网_海企优网站推荐平台| 北京软件开发_软件开发公司_北京软件公司-北京宜天信达软件开发公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 范秘书_懂你的范文小秘书 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 |