2010-08-15 36 views
48

Có thể nghe tất cả các sự kiện javascript không?Giám sát tất cả các sự kiện JavaScript trong bảng điều khiển trình duyệt

Tôi đang cố gắng đoán xem có sự kiện nào được kích hoạt sau khi DOM được sửa đổi bởi yêu cầu AJAX hay không.

+0

Nhìn theo Đột biến ở đây: http://en.wikipedia.org/wiki/DOM_events#Common.2FW3C_events là những sự kiện bạn đang theo dõi? –

+0

Tôi đang tìm cách chặn sự kiện onreadystatechange trên tất cả XMLHttpRequest – knoopx

Trả lời

93

Với firebug hoặc web inspector bạn có thể sử dụng monitorEvents:

monitorEvents(myDomElem); 

này in tất cả các sự kiện được phát ra bởi myDomElem ra cửa sổ Console. Sử dụng unmonitorEvents để ngừng theo dõi sự kiện.

Nếu bạn quan tâm đến việc nhận sự kiện sau khi DOM bị thao tác, hãy xem Mutation Events.

Sửa:

Theo như tôi biết, không có cách nào dễ dàng để chặn tất cả onreadystatechange sự kiện từ tất cả XMLHttpRequest. Công việc duy nhất xung quanh tôi có thể nghĩ đến là ghi đè đối tượng XMLHttpRequest gốc với bạn thực hiện riêng. Ví dụ:

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

Không cần phải nói điều này vô cùng khó hiểu và thường không được thông báo.

+2

có, http://api.jquery.com/ajaxSuccess/ chỉ cần gắn trình bao bọc XHR của jQuery, vì vậy không có sự kiện JS thực sự nào được bắt. Tuy nhiên hack này nên làm các trick :) – knoopx

+2

"thường ill-tư vấn" - tại sao? –

+1

Cập nhật: 'monitorEvents' hoạt động hoàn toàn tốt trong Chrome. –

Các vấn đề liên quan