2012-06-07 21 views
13

Tôi vẫn không thể tin rằng điều này là không thể nhưng có cách nào để lặp qua dom và xem tất cả trình xử lý sự kiện được đính kèm bằng 'addEventListener'. This post và nhiều người khác nói không.Làm thế nào để tìm người nghe sự kiện trên nút DOM bằng cách sử dụng JavaScript

Nếu trường hợp đó xảy ra thì các ứng dụng như trình kiểm tra của Chrome hoặc Firebug sẽ hiển thị chúng như thế nào? Tôi đoán họ có thể tăng thêm các phương pháp của dom theo một cách nào đó để họ có thể theo dõi những gì đang bị ràng buộc.

+0

Bạn thấy trình xử lý sự kiện hiển thị Chrome hoặc Firebug ở đâu? –

+0

Vâng, tôi rất muốn biết bạn cũng nhìn thấy chúng ở đâu! Tôi đã tải xuống plugin cho Firebug hiển thị cho họ, nhưng có thể bạn đã đúng khi họ theo dõi bất kỳ trình xử lý sự kiện nào khi họ bị ràng buộc – Ian

+1

Trong trình kiểm tra web chrome, hãy nhấp vào tab 'các yếu tố' ở trên cùng. đó là tp xa nhất bên trái. Chọn một phần tử trong dom và sau đó ở phía bên tay phải có một danh sách thông tin về phần tử bạn đã chọn như Styles, Properties vv. Cuối cùng trong danh sách là Event Listeners và nó cung cấp cho bạn tất cả thông tin bạn cần. Nhưng Bạn chỉ có thể xem thông tin cho mỗi phần tử được chọn, chứ không phải toàn bộ DOM. Hense tôi đặt câu hỏi :) – screenm0nkey

Trả lời

25

Bảng điều khiển của Chrome có một phương pháp có thể giúp bạn kiểm tra nếu một nút dom có ​​bất kỳ người nghe sự kiện đăng ký, ví dụ để kiểm tra nghe sự kiện gắn liền với việc sử dụng nút tài liệu:

https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject

getEventListeners(document); 

Bạn đệ quy có thể lặp qua tất cả các nút dom và tìm thấy tất cả xử lý sự kiện kèm theo Nếu cần thiết.

+2

getEventListeners (myDomElement) hoạt động trong bảng điều khiển công cụ dành cho nhà phát triển Chromium v.25, nhưng trong mã thực tế nó có lỗi. –

+0

@Robinlikethebird yes, 'getEventListeners' là một phương thức mà chrome devtools console cung cấp, tôi đang tìm một phương thức có thể tìm thấy các sự kiện liên kết với dom khi chạy. bây giờ, tôi chỉ tìm thấy phương thức jquery '$ .data (element, 'events')'. Tôi đang tìm kiếm một cách đơn giản bằng javascript hoặc DOM. – novaline

0

Mở console v53 Chrome tôi đã cố gắng:

getEventListeners (tài liệu);

trả về:

__proto__: Object

và tiểu yếu tố, chứ không phải những gì tôi đang tìm kiếm.

Vì vậy, tôi đã cố gắng:

getEventListeners (cửa sổ);

trả

Object {beforeunload: Array [1], tải: Array [1]}

Đó là những gì tôi đang tìm kiếm. Vì vậy, tôi nghĩ rằng cách tiếp cận đúng là Robin như cách của chim:

getEventListeners (myDomElement):

nơi myDomElement là nhắm mục tiêu đối tượng có với cách tiêu chuẩn như getElementById vv ..

0

sử dụng chức năng sau để tìm nạp json các sự kiện đã đăng ký;

getEventListeners (node_name); trong đó node_name có thể là tên phần tử hoặc id của nó.

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