Я пытаюсь перегрузить XMLHttpRequest.* метод в JavaScript так веб-страница может выяснить, произошел ли запрос Ajax, не используя навязчивых обратных вызовов. Теперь, что-то вроде этого работает относительно прекрасное при использовании большинства платформ JS:
XMLHttpRequest.prototype.getResponseHeader = function() {
alert('O hai, looks like you made an AJAX request.');
}
Однако существует две выгоды:
xmlhttp.open("GET","simple.html",false);
Есть ли любой способ, которым может зеркально отразить JS XMLHttpRequest.open()
или любой способ, которым я могу объединить что-то в цепочку к нему. Я попробовал миллион парадигм (фабрика, клонирование, переносясь - самый получающийся в бесконечной рекурсии), и ничто, кажется, не работает. Возможно, это просто невозможно. Какие-либо идеи?
Вы можете оставить ссылка на оригинал в некоторой переменной перед тем, как вы переопределите метод, а затем вызовите эту переменную в функции, которую вы переопределили:
var temp = XMLHttpRequest.getResponseHeader;
XMLHttpRequest.getResponseHeader = function() { temp.apply(this, arguments); };
Это должно позволить вам отслеживать использование без переопределения функциональности, предоставляемой исходной функцией.
XmlHttp будет настоящей проблемой, это COM объект и не поддерживает манипуляции с прототипом, которые вы хотите использовать. Что еще хуже, JQuery избегает XmlHttpRequest
в IE, даже когда он доступен, вместо этого он использует XmlHttp.