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


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

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

2 51

2 ответа:

С 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;
})();

Излишне говорить, что это очень хаки и вообще неразумно.

чтобы Хрюша отступил от ответа Хави monitorEvents(myDomElem), Если вы хотите все, кроме событий мыши, вы можете ввести unmonitorEvents(myDomElem, 'mouse').

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