在浏览器控制台中监控所有JavaScript事件

时间:2010-08-15 21:53:54

标签: javascript events

是否可以收听所有javascript事件?

我试图猜测在AJAX请求修改DOM之后是否触发了事件。

2 个答案:

答案 0 :(得分:96)

使用firebugweb inspector,您可以使用monitorEvents

monitorEvents(myDomElem);

这会将myDomElem发出的所有事件打印到控制台。使用unmonitorEvents停止监控事件​​。

如果您对DOM被操纵后获取事件感兴趣,请查看Mutation Events

修改

据我所知,没有简单的方法来拦截所有XMLHttpRequest中的所有onreadystatechange事件。我能想到的唯一解决方法是使用您自己的实现覆盖本机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;
})();

毋庸置疑,这是非常愚蠢的,而且通常是不明智的。

答案 1 :(得分:10)

如果您想要除鼠标事件之外的其他所有内容,请回顾Xavi对monitorEvents(myDomElem)的回答,然后您可以输入unmonitorEvents(myDomElem, 'mouse')

http://www.briangrinstead.com/blog/chrome-developer-tools-monitorevents有一篇关于使用Chrome监视器事件的文章。