Выяснение, когда запрос XMLHttpRequest был выполнен без обратных вызовов

Я пытаюсь перегрузить XMLHttpRequest.* метод в JavaScript так веб-страница может выяснить, произошел ли запрос Ajax, не используя навязчивых обратных вызовов. Теперь, что-то вроде этого работает относительно прекрасное при использовании большинства платформ JS:

XMLHttpRequest.prototype.getResponseHeader = function() {
 alert('O hai, looks like you made an AJAX request.');
}

Однако существует две выгоды:

  • getResponseHeader не может использоваться в качестве getResponseHeader больше.
  • Это не работает в простых примерах Ajax. т.е. xmlhttp.open("GET","simple.html",false);

Есть ли любой способ, которым может зеркально отразить JS XMLHttpRequest.open() или любой способ, которым я могу объединить что-то в цепочку к нему. Я попробовал миллион парадигм (фабрика, клонирование, переносясь - самый получающийся в бесконечной рекурсии), и ничто, кажется, не работает. Возможно, это просто невозможно. Какие-либо идеи?

6
задан David Titarenco 12 February 2010 в 21:29
поделиться

2 ответа

Вы можете оставить ссылка на оригинал в некоторой переменной перед тем, как вы переопределите метод, а затем вызовите эту переменную в функции, которую вы переопределили:

var temp = XMLHttpRequest.getResponseHeader;
XMLHttpRequest.getResponseHeader = function() { temp.apply(this, arguments); };

Это должно позволить вам отслеживать использование без переопределения функциональности, предоставляемой исходной функцией.

2
ответ дан 17 December 2019 в 20:31
поделиться

XmlHttp будет настоящей проблемой, это COM объект и не поддерживает манипуляции с прототипом, которые вы хотите использовать. Что еще хуже, JQuery избегает XmlHttpRequest в IE, даже когда он доступен, вместо этого он использует XmlHttp.

0
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: