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

<i id='3swiV'><tr id='3swiV'><dt id='3swiV'><q id='3swiV'><span id='3swiV'><b id='3swiV'><form id='3swiV'><ins id='3swiV'></ins><ul id='3swiV'></ul><sub id='3swiV'></sub></form><legend id='3swiV'></legend><bdo id='3swiV'><pre id='3swiV'><center id='3swiV'></center></pre></bdo></b><th id='3swiV'></th></span></q></dt></tr></i><div class="7vb77dd" id='3swiV'><tfoot id='3swiV'></tfoot><dl id='3swiV'><fieldset id='3swiV'></fieldset></dl></div>

<legend id='3swiV'><style id='3swiV'><dir id='3swiV'><q id='3swiV'></q></dir></style></legend>

  1. <tfoot id='3swiV'></tfoot>

    <small id='3swiV'></small><noframes id='3swiV'>

      • <bdo id='3swiV'></bdo><ul id='3swiV'></ul>

      如何修改另一個函數接收到的 XMLHttpRequest 響應文

      How can I modify the XMLHttpRequest responsetext received by another function?(如何修改另一個函數接收到的 XMLHttpRequest 響應文本?)

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

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

          <tbody id='A59Vz'></tbody>
        • <legend id='A59Vz'><style id='A59Vz'><dir id='A59Vz'><q id='A59Vz'></q></dir></style></legend>

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

              • 本文介紹了如何修改另一個函數接收到的 XMLHttpRequest 響應文本?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我正在嘗試修改我無法修改的函數接收到的 responseText.此函數創建一個我可以附加到的 XMLHttpRequest,但我無法以一種允許我在原始函數接收到內容之前修改內容的方式包裝"responseText.

                I am trying to modify the responseText received by a function that I cannot modify. This function creates a XMLHttpRequest that I can attach to, but I have been unable to "wrap" the responseText in a way that allows me to modify the content before the original function receives it.

                這是完整的原始功能:

                function Mj(a, b, c, d, e) {
                    function k() {
                        4 == (m && 'readyState' in m ? m.readyState : 0) && b && ff(b) (m)
                    }
                    var m = new XMLHttpRequest;
                    'onloadend' in m ? m.addEventListener('loadend', k, !1)  : m.onreadystatechange = k;
                    c = ('GET').toUpperCase();
                    d = d || '';
                    m.open(c, a, !0);
                    m.send(d);
                    return m
                }
                function ff(a) {
                    return a && window ? function () {
                        try {
                            return a.apply(this, arguments)
                        } catch(b) {
                            throw jf(b),
                                b;
                        }
                    } : a
                }
                

                我也嘗試過操縱接收函數 k();試圖達到我的目標,但由于它不依賴于傳遞給函數的任何數據(例如 k(a.responseText);)我沒有成功.

                I have also tried to manipulate the reiceiving function k(); in an attempt to reach my goal, but since it doesn't depend on any data passing to the function (for example k(a.responseText);) I had no success.

                有什么方法可以實現嗎?我不希望使用 js 庫(如 jQuery);

                Is there any way that I can achieve this? I do not wish to use js libraries (such as jQuery);

                編輯:我知道我無法直接更改 .responseText,因為它是只讀的,但我正在嘗試找到一種方法來更改響應和接收函數之間的內容.

                EDIT: I understand that I cannot change .responseText directly since it is read-only, but I am trying to find a way to change the content between the response and receiving function.

                EDIT2:在我嘗試攔截和更改已從此處添加的 .responseText 的方法之一下方添加:猴子補丁 XMLHTTPRequest.onreadystatechange

                EDIT2: Added below one of the methods I have tried to intercept and change .responseText which has been addapted from here: Monkey patch XMLHTTPRequest.onreadystatechange

                (function (open) {
                XMLHttpRequest.prototype.open = function (method, url, async, user, pass) {
                    if(/results/.test(url)) {
                      console.log(this.onreadystatechange);
                        this.addEventListener("readystatechange", function () {
                            console.log('readystate: ' + this.readyState);
                            if(this.responseText !== '') {
                                this.responseText = this.responseText.split('&')[0];
                            }
                        }, false);
                    }
                    open.call(this, method, url, async, user, pass);
                };
                })(XMLHttpRequest.prototype.open);
                

                <小時>

                EDIT3:我忘了包括函數 Mj 和 ff 不是全局可用的,它們都包含在一個匿名函數中 (function(){functions are here})();


                EDIT3: I forgot to include that the functions Mj and ff are not globally available, they are both contained inside an anonymous function (function(){functions are here})();

                EDIT4:我更改了接受的答案,因為 AmmarCSE 沒有任何與 jfriend00 的答案相關的問題和復雜性.

                EDIT4: I have changed the accepted answer because AmmarCSE's does not have any of the problems and complexity linked to jfriend00's answer.

                簡而言之,最佳答案如下:

                The best answer explained in short is as follows:

                偵聽您要修改的任何請求(確保您的偵聽器會在原始函數目標之前攔截它,否則在響應已經使用后修改它沒有意義).

                Listen to whichever request you want to modify (make sure your listener will intercept it before the original function destination does, otherwise there is no point in modifying it after the response has already been used).

                將原始響應(如果要修改)保存在臨時變量中

                Save the original response (if you want to modify it) in a temporary variable

                將要修改的屬性更改為可寫:真",它將擦除它擁有的任何值.就我而言,我使用

                Change the property you want to modify to "writable: true", it will erase whichever value it had. In my case I use

                Object.defineProperty(event, 'responseText', {
                    writable: true
                });
                

                其中event是監聽xhr請求的loadreadystatechange事件返回的對象

                Where event is the object returned by listening to the load or readystatechange event of the xhr request

                現在您可以為響應設置任何您想要的內容,如果您只想修改原始響應,那么您可以使用臨時變量中的數據,然后將修改保存在響應中.

                Now you can set anything you want for your response, if all you wanted was to modify the original response then you can use that data from your temporary variable and then save the modifications in the response.

                推薦答案

                一個非常簡單的解決方法是更改?? responseText 本身的屬性描述符

                One very simple workaround is to change the property descriptor for responseText itself

                Object.defineProperty(wrapped, 'responseText', {
                     writable: true
                });
                

                所以,你可以像

                (function(proxied) {
                    XMLHttpRequest = function() {
                        //cannot use apply directly since we want a 'new' version
                        var wrapped = new(Function.prototype.bind.apply(proxied, arguments));
                
                        Object.defineProperty(wrapped, 'responseText', {
                            writable: true
                        });
                
                        return wrapped;
                    };
                })(XMLHttpRequest);
                

                演示

                這篇關于如何修改另一個函數接收到的 XMLHttpRequest 響應文本?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持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='gZkno'></tbody>

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

                      <tfoot id='gZkno'></tfoot>

                      1. <legend id='gZkno'><style id='gZkno'><dir id='gZkno'><q id='gZkno'></q></dir></style></legend>
                        • 主站蜘蛛池模板: 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 自动焊锡机_点胶机_螺丝机-锐驰机器人| 温室大棚建设|水肥一体化|物联网系统 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 传动滚筒,改向滚筒-淄博建凯机械科技有限公司 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 执业药师报名条件,考试时间,考试真题,报名入口—首页 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 光环国际-新三板公司_股票代码:838504 | 武汉宣传片制作-视频拍摄-企业宣传片公司-武汉红年影视 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 苏州工作服定做-工作服定制-工作服厂家网站-尺品服饰科技(苏州)有限公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 |