2012-05-17 30 views
29

Làm cách nào để tìm hiểu chức năng javascript đang được gọi bởi sự kiện onclick của đối tượng? Thậm chí tốt hơn, sau đó tôi có thể tìm ra tệp .js nào có trong hàm đó không?Làm cách nào để tìm hiểu chức năng javascript đang được gọi bởi sự kiện onclick của đối tượng?

+0

Để rõ ràng, bạn có đối tượng DOM và bạn muốn biết nó hoạt động như thế nào? Bạn đã thử 'someObject.onclick' hoặc' someObject.getAttribute ("onclick") '? Bạn không thể biết nó xuất phát từ đâu, vì mã JS không biết gì về nó xuất phát từ tập tin nào. – apsillers

+0

có thể trùng lặp của [Làm cách nào để kiểm tra xem có bất kỳ trình xử lý sự kiện JavaScript/trình xử lý nào được đính kèm với một phần tử/tài liệu không?] (Http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event- listener-handlers-attached-to-an-element-d) –

+0

@Diodeus: câu hỏi đó là khác nhau - đó là về cách sử dụng jQuery để có được các sự kiện bị ràng buộc, trong khi OP đang tìm kiếm một devtool trình duyệt thay thế. –

Trả lời

2

Bạn có thể làm như thế này

Với Javascript Demo on JsFiddle

div1 = document.getElementById('div1'); 

alert(div1.getAttribute("onclick"));​ 

Với jQuery Demo on JsFiddle

<div id="div1" onclick="myfun();" >​ 

alert($('#div1').attr('onclick'))​; 
+4

Tôi không thấy thẻ jQuery trên câu hỏi ở bất kỳ đâu. –

+1

Sửa đổi câu trả lời của tôi Tôi hy vọng nó bây giờ là – Adil

+0

Điều này sẽ yêu cầu anh ta tiêu mã của mình bằng các cảnh báo(). Cách khủng khiếp để gỡ lỗi javascript. – Gjohn

0

Tôi làm điều này bằng Visual Event kịch bản này mà ngay ngắn nêu bật sự kiện nào đã đăng ký mà chức năng trên yếu tố nào.

Để tìm khẩu hiệu của mã, chỉ cần sử dụng FireBug hoặc các công cụ phát triển trình duyệt tương tự để tìm kiếm tên hàm.

1

Bạn sẽ không thể tìm thấy tệp mà sự kiện onclick được gọi từ nhưng myObject.onclick sẽ cung cấp cho bạn hàm đang được gọi. Và không, bạn không cần jQuery cho việc này.

Theo như nhận được tên của hàm, điều đó phức tạp hơn một chút. Bạn có thể thử một cái gì đó như thế này, có lẽ:

var myFunc = myObject.onclick, myFuncName = ""; 

for(prop in window) { 
    if(window.hasOwnProperty(prop) && window[prop] === myFunc) { 
     myFuncName = prop; // myFuncName is now the name of the function. This only works if you didn't assign an anonymous function to the click handler. 
     break; 
    } 
} 

Nhưng thành thật mà nói, tôi nghĩ đó là một chút quá mức cần thiết.

1

Điều đó phụ thuộc vào cách event được đính kèm.

Nếu bạn đang ràng buộc để onclick mà không cần một cái gì đó giống như jQuery bạn có thể làm điều này:

var obj = document.getElementById('elementId'); 
console.log(obj.onclick); 
49

tôi sử dụng Công cụ nhà phát triển Chrome cho việc này:

Event Listener Breakpoints in Google Chrome's developer tools

Kiểm tra click hộp, và sau đó nhấp vào phần tử trên trang bạn muốn tìm trình xử lý. Nếu bạn đang sử dụng jQuery (hoặc thư viện tương tự), bạn có thể phải bước qua mã của họ trước khi bạn nhận được mã của bạn.

+1

Tôi chưa bao giờ biết điều này tồn tại trong chrome.Điều này thật tuyệt vời và trả lời câu hỏi cho tôi. – circlecube

+0

Cảm ơn bạn đã thông báo cho chúng tôi về công cụ này, nhưng trong phương thức này, phương pháp này hữu ích nếu nó định hướng cho tôi dòng mã từ thư viện jQuery. Cách biết phần nào của mã MY đang chạy. –

+1

@whitelettersandblankspaces Cách duy nhất tôi biết hiện tại là bước qua mã của jQuery cho đến khi bạn nhận được mã của bạn. – benekastah

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