Javascript - отслеживание любого xmlhttprequest - PullRequest
1 голос
/ 07 марта 2019

Могу ли я проверить любой XmlHttpRequest, исполняемый на странице, не добавляя addEventListener каждый из них? Я пытаюсь добавить

document.addEventListener("loadend"...)

но ничего не случилось. Похоже, в запросах нет глобальных событий?

// РЕДАКТИРОВАНИЕ //

Мне нужно обнаружить новые элементы, которые загружаются с помощью ajax. Отличное решение для этого - здесь

Использование MutationObserver

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Заставьте свои XMLHttpRequest s запускать пользовательское событие, когда они будут завершены, а затем прослушайте эти события.

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

И прослушайте эти события:

document.addEventListener("myLoadend"...)
0 голосов
/ 07 марта 2019

Я думаю, вы должны переосмыслить свой дизайн.Почему ты хочешь сделать это.Есть ли лучшие варианты?

Однако, если вы действительно хотите это сделать, вы можете взломать его, переписав стандартный объект 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...