2013-06-10 1 views
2

У меня есть сайт, на котором работает какое-то стороннее приложение, которое делает некоторый HTTP-запрос для ввода данных. Я хочу знать, можно ли поймать любой HTTP-запрос, который инициализирован на моей странице, и как его поймать, если это возможно?Поймать любое событие, которое делает http-запрос с помощью javascript

Я хочу поймать это с помощью javascript, потому что мне нужно показать на моей странице некоторые подсказки о http-запросе.

+0

Это действительно функция уровня браузера я бы поспорил. – Lloyd

+0

не реально ... Думаю, я знаю, как это сделать, это ничего особенного. Я просто хочу знать правильный способ сделать это, я не эксперт в javascript, поэтому я надеюсь, что кто-то может сказать мне правильный ответ, если я не могу так или иначе сделать это, не волнуйтесь, будьте счастливы – Jigberto

+0

Я думаю, что можно только поймать запросы ajax: http: //api.jquery.com/category/ajax/global-ajax-event-handlers/ –

ответ

6

Я хочу поймать это с помощью javascript, потому что мне нужно показать на моей странице некоторые подсказки о http-запросе.

Вы можете обернуть XMLHttpRequest в функции, которая регистрирует caller перед возвращением реального XMLHttpRequest.

(function() { // scope saves you from infinite loops/loss of __xhr 
    var __xhr = window.XMLHttpRequest; // back up 
    function XMLHttpRequest() { // wrap 
     console.log(
      XMLHttpRequest.caller || arguments.caller || 'caller not supported' 
     ); 
     return new __xhr; 
    } 
    window.XMLHttpRequest = XMLHttpRequest; // shadow 
}()); 

function foo() { // example 
    var bar = new XMLHttpRequest(); 
} 
foo(); // invoke 

/* console logs 
function foo() { // example 
    var bar = new XMLHttpRequest(); 
} 
*/ 

Конструктор может быть получен с помощью

var x = new XMLHttpRequest(); // function doing this gets logged 
window.XMLHttpRequest = x.constructor; // normality restored 
Смежные вопросы