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>
                        • 主站蜘蛛池模板: 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 温室大棚建设|水肥一体化|物联网系统 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 高压负荷开关-苏州雷尔沃电器有限公司| 南京欧陆电气股份有限公司-风力发电机官网 | 世纪豪门官网 世纪豪门集成吊顶加盟电话 世纪豪门售后电话 | 长城人品牌官网| 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 123悬赏网_发布悬赏任务_广告任务平台 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 361°官方网站| 数控走心机-双主轴走心机厂家-南京建克 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 |