【问题标题】:Javascript - Track any xmlhttprequestJavascript - 跟踪任何 xmlhttprequest
【发布时间】:2019-03-07 20:38:06
【问题描述】:

我可以在不添加 addEventListener 的情况下检查页面上的任何 XmlHttpRequest 可执行文件吗?我尝试添加

document.addEventListener("loadend"...)

但什么也没发生。 看起来请求没有全局事件?

// 已编辑 //

我需要检测由 ajax 加载的新元素。 很好的解决方案-here

使用MutationObserver

【问题讨论】:

    标签: javascript dom xmlhttprequest


    【解决方案1】:

    我认为你应该重新考虑你的设计。你为什么要这样做。有更好的选择吗?

    但是,如果您真的想这样做,您可以通过用您自己的覆盖标准 XmlHttpRequest 对象来“破解”它。您必须在启动任何 XmlHttpRequest 之前执行此操作,以使其适用于所有对象。

    //store the original XMLHttpRequest in a variabele so you can use it yourself
    var originalXMLHttpRequest = XMLHttpRequest;
    
    //Overwrite the original object with your own in which you create an instance of the original object, add an event listner to it and return that.
    XMLHttpRequest = function() {
      var req = new originalXMLHttpRequest();
      req.addEventListener("loadend", function() {
        console.log("loadend event fired");
      });
      return req;
    };
    
    //Test if it works
    httpReq = new XMLHttpRequest();
    httpReq.open("GET", "https://stackoverflow.com/");
    httpReq.send();

    【讨论】:

    【解决方案2】:

    让您的XMLHttpRequests 在完成后触发一个自定义事件,然后监听这些事件。

    var r = new XMLHttpRequest();
    r.onload = function() {
        e = new CustomEvent('myLoadend', {detail: {foo: 'bar'}});
        document.dispatchEvent(e);
    }
    

    并聆听这些事件:

    document.addEventListener("myLoadend"...)
    

    【讨论】:

    • 我无法访问原始事件。
    • 哪个原创活动?也许你的意思是请求?
    • 是的。我为安卓应用程序编写代码,为网站定制设计。无法更改原始 css 或 js。
    猜你喜欢
    • 2015-07-20
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多