2012-01-20 25 views
13

Ví dụ: giả sử có mã Javascript sẽ thực thi someFunction() khi nút được nhấp và tôi nhấp vào nút đó. Tôi tự hỏi nếu có một số cách để thấy rằng someFunction() đã được thực hiện. Có cách nào để xem những chức năng nào được thực thi trong Chrome trong thời gian thực?Có cách nào để xem chức năng Javascript nào (tên của hàm) thực thi trong thời gian thực trong Thanh tra của Chrome không? Ví dụ:

Nếu đó là tab Tiểu sử trong thanh tra thực hiện thủ thuật, bạn biết chính xác chức năng nào sẽ kích hoạt trong thời gian thực với điều đó?

EDIT 1/21/2012 12: 36p Thái Bình Dương: Từ bình luận của Brian Nickel bên dưới, tab Dòng thời gian trong Trình kiểm tra là cách để xem điều gì xảy ra trong thời gian thực, nhưng làm cách nào bạn thấy tên của các hàm được thực hiện trong dòng thời gian?

+2

Thời gian thực thực tế sẽ có phần vô dụng, vì nó sẽ là quá nhanh để làm theo. Đặt * điểm ngắt * trên mã bạn muốn theo dõi. – deceze

+2

Tôi đã thấy các chức năng riêng lẻ được liệt kê trong dòng thời gian. –

+0

Tôi không thể đặt điểm ngắt vì không phải mã của tôi và tôi không biết vị trí đặt điểm ngắt. hehe. Đó là những gì tôi đang cố gắng tìm ra! @BrianNickel, dòng thời gian nào mà bạn đang nói đến? – trusktr

Trả lời

12

Công cụ nhà phát triển Timeline và Scripts có thể được sử dụng để thực hiện mục tiêu này.

  • Mở bảng công cụ nhà phát triển và nhấn Ghi dưới dòng thời gian để bắt đầu hoạt động theo dõi.
  • Kích hoạt sự kiện bạn quan tâm (ví dụ: trong ví dụ của bạn, nhấp vào nút), sau đó dừng ghi (hoặc tiếp tục ghi lại, nhưng nhận thức được lượng dữ liệu bạn đang thu thập).
  • Lưu ý các entires đã đăng nhập trong bảng Timeline. Tìm sự kiện có liên quan và nhấp vào mũi tên xoắn bên trái thanh thời gian cho sự kiện đó. Thao tác này sẽ hiển thị các cuộc gọi hàm được liên kết với sự kiện đó.
  • Nhấp vào liên kết ở bên phải của hàm gọi để xem JavaScript có liên quan. (Bạn yêu cầu tên hàm, nhưng hãy nhớ rằng sự kiện có thể được liên kết với một hàm ẩn danh, do đó không phải lúc nào cũng có sẵn tên.)
  • Nếu bạn muốn tự mình duyệt qua trình xử lý sự kiện, hãy chèn breakpoint tại dòng sau khai báo của trình xử lý (giả sử khai báo xử lý sự kiện lớn hơn một dòng). Ngoài ra, mở rộng các Event Breakener Event trong bảng Scripts và kiểm tra kiểu sự kiện thích hợp (như được liệt kê trong bảng Timeline cho sự kiện liên quan). Lưu ý rằng cách tiếp cận này sẽ phá vỡ mọi phiên bản của sự kiện đó, thay vì lời gọi duy nhất mà bạn quan tâm.

Nếu bạn gặp sự cố với JavaScript rút gọn và chèn điểm ngắt (vì mỗi dòng quá dài), đây là mẹo: mở tệp tập lệnh được rút gọn trong bảng Tập lệnh thông qua menu thả xuống, sau đó nhấp vào {}. Điều này sẽ cho phép Pretty Print, mở rộng mã được rút gọn thành một cái gì đó dễ đọc hơn bằng cách thêm khoảng trắng. Điều này cho phép bạn chèn điểm ngắt chi tiết hơn. Lưu ý rằng nếu bây giờ bạn quay lại bảng điều khiển Dòng thời gian, tham chiếu tập lệnh (ví dụ: jquery.min.js:3) hiện sử dụng số dòng được in đẹp, chứ không phải các số dòng được cắt nhỏ, trắng.

+0

Tôi thấy, nó sẽ đưa bạn đến các dòng mã nơi chức năng được tìm thấy. Tốt đẹp! Tôi thấy rằng điều này hoạt động tốt với mã chưa được sửa đổi, nhưng nếu bạn có mã được rút gọn chứa mọi thứ trên một đến ba dòng, thì bạn sẽ không may mắn vì có thể có nhiều hàm được xác định trên một dòng. Tôi đoán đây là điều tốt nhất chúng tôi có ngay bây giờ. Sẽ thuận tiện hơn nếu nó cũng thêm một số cột, không chỉ là số lượng dòng. Ví dụ: 'jquery.min.js: 3: 56' sẽ đẹp hơn' jquery.min.js: 3'. – trusktr

+1

Thực ra, có một mẹo để làm việc đó. Vui lòng xem câu trả lời đã sửa đổi của tôi. – cheeken

+0

Aha, tuyệt! Quả thực đó chính xác là cách để làm điều đó! – trusktr

0

Có rất nhiều các tiện ích tốt, bạn có thể sử dụng: console.trace();, debugger vv

+0

Điều này không cung cấp cách để xem những chức năng nào được gọi trong thời gian thực mà không sửa đổi mã. – trusktr

0
+0

Thú vị, nhưng mã tôi có không phải là mã của riêng tôi, vì vậy tôi đang cố gắng tìm ra những phần nào của mã thực thi với một số hành động nhất định (ví dụ như onclick). Tất cả những thứ đó trong bài viết thứ hai đều tốt đẹp, nhưng bạn phải biết WHERE để đặt điểm ngắt và cho những biểu thức nào để theo dõi, cái mà tôi không có đầu mối. Có cách nào để xem chức năng ban đầu nào được thực thi khi một sự kiện nhất định (ví dụ: nhấp chuột) xảy ra? – trusktr

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