Подтвердить что ты не робот

Как проверить, открыты ли HTTP-запросы в браузере?

Есть ли простой способ определить, активен ли XMLHttpRequest в окне браузера? Или сколько активных? то есть. Есть ли способ обнаружить, есть ли какие-либо вызовы AJAX, активные в моем окне браузера?

Расширение вопроса: Использование javascript - это способ, которым я могу видеть, открыты ли какие-либо XMLHttpRequests? Например, "window.XMLisActive()" или что-то в этом роде?

Решение: закончено создание обертки для XMLHttpRequest https://gist.github.com/1820380

4b9b3361

Ответ 1

Невозможно обнаружить открытое соединение с JS, если вы не напишите обертку для XmlHttpRequest (или обезьяны патч ее), которая отслеживает открытые соединения.

Здесь патч обезьяны kidcapital, не уверен, что он идеален, но это хорошее начало

  (function() {
    var oldOpen = XMLHttpRequest.prototype.open;
    window.openHTTPs = 0;
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
      window.openHTTPs++;
      this.addEventListener("readystatechange", function() {
          if(this.readyState == 4) {
            window.openHTTPs--;
          }
        }, false);
      oldOpen.call(this, method, url, async, user, pass);
    }
  })();

Ответ 2

Вы можете использовать FireBug для этого.

enter image description here

Ответ 3

Используя jQuery, вы можете отслеживать, есть ли открытые запросы с глобальными обработчиками событий: . ajaxStart() и . ajaxComplete()

Глобальная переменная, установленная на ajaxStart и reset на ajaxComplete, должна выполнить задание.