Trong IE bạn có thể sử dụng từ khóa debugger;
. Không chắc chắn về sự thân thiện x-trình duyệt:
function sayHello() {
debugger; // will break here and launch script debugging in IE
alert('hello world');
}
Trong bối cảnh thách thức của bạn:
function someKeyPress(e) {
debugger;
// inspect e.keyCode ... etc
}
Tôi tìm thấy điều này được các kỹ thuật gỡ lỗi hiệu quả nhất, nhưng sau đó một lần nữa tôi dành rất nhiều thời gian trong IE. Nhiều người rất hài lòng với Firebug nhưng tôi thấy nó cồng kềnh và kém trực quan hơn trình gỡ rối của IE. Trình gỡ rối của IE cung cấp cho việc đánh giá biểu thức và đồng hồ dễ dàng hơn, đồng thời cũng cung cấp các chú giải dựa trên phản chiếu tương tác (như trình gỡ lỗi VS).
Ngoài ra, mỗi câu hỏi của bạn "theo dõi phương thức nào được gọi là" - ngăn xếp cuộc gọi rất nhạy và dễ theo dõi lại.
UPDATE:
Dưới đây là một kịch bản để đặt trên dưới cùng của mỗi trang để bẫy và gỡ lỗi các sự kiện, trong IE:
<script type="text/javascript">
function wrapIfHandled(el, evt) {
if (el && evt && el['on' + evt]) {
el['_on' + evt] = el['on' + evt];
el['on' + evt] = function (e) {
foo(e, el['_on' + evt]);
};
}
}
function wrapAll() {
var allEl = document.getElementsByTagName("*");
for (var i = 0; i < allEl.length; i++) {
wrapIfHandled(allEl[i], 'click');
// wrapIfHandled(allEl[i], other event names <keyup, keydown, etc>
}
}
function foo(e, d) {
debugger;
d(e);
}
wrapAll();
</script>
Đối với điều này tôi phải biết được nơi các trình xử lý sự kiện quan trọng được xác định. Nhưng đây chính xác là lý do cho câu hỏi của tôi, tôi không biết phương thức xử lý sự kiện nào được gọi. Hãy tưởng tượng một hệ thống phần mềm rất lớn và cũ - mọi thứ có thể khó khăn để tìm tất cả chúng. – MRalwasser