Мониторинг всех событий JavaScript в консоли браузера

Можно ли прослушивать все события javascript?

Я пытаюсь угадать, произошло ли событие, вызванное после изменения DOM с помощью запроса AJAX.

Ответ 1

С firebug или веб-инспектор вы можете используйте monitorEvents:

monitorEvents(myDomElem);

Отправляет все события, отправленные myDomElem на консоль. Используйте unmonitorEvents, чтобы остановить мониторинг событий.

Если вы заинтересованы в получении событий после манипулирования DOM, посмотрите События мутации.

Edit

Насколько я знаю, нет простого способа перехватить все события onreadystatechange из всего XMLHttpRequest. Единственное, о чем я могу думать, это переопределить собственный объект XMLHttpRequest с вашей собственной реализацией. Например:

(function() { // Overriding XMLHttpRequest
    var oldXHR = window.XMLHttpRequest;

    function newXHR() {
        var realXHR = new oldXHR();

        realXHR.addEventListener("readystatechange", function() { 
            console.log("an ajax request was made") 
        }, false);

        return realXHR;
    }

    window.XMLHttpRequest = newXHR;
})();

Излишне говорить, что это крайне хакерский и вообще плохо информированный.

Ответ 2

Чтобы отбросить ответ Xavi monitorEvents(myDomElem), если вы хотите все, кроме событий мыши, вы можете ввести unmonitorEvents(myDomElem, 'mouse').

http://www.briangrinstead.com/blog/chrome-developer-tools-monitorevents имеет хорошую статью в отношении использования событий хромового монитора.