Hướng dẫn javascript check for event listener - kiểm tra javascript cho trình nghe sự kiện
TL; DR: Không, bạn không thể làm điều này theo bất kỳ cách nào được hỗ trợ tự nhiên.: No, you cannot do this in any natively supported way. Show
Cách duy nhất tôi biết để đạt được điều này là tạo một đối tượng lưu trữ tùy chỉnh nơi bạn giữ một bản ghi của người nghe được thêm vào. Một cái gì đó dọc theo các dòng sau:
Bước 1: Đầu tiên, bạn sẽ cần một hàm có thể đi qua đối tượng lưu trữ và trả về bản ghi của một phần tử được đưa ra phần tử (hoặc sai). First, you will need a function that can traverse the storage object and return the record of an element given the element (or false).
Bước 2: Sau đó, bạn sẽ cần một chức năng có thể thêm trình nghe sự kiện nhưng cũng chèn trình nghe vào đối tượng lưu trữ. Then, you will need a function that can add an event listener but also insert the listener to the storage object.
Bước 3: Liên quan đến yêu cầu thực tế của câu hỏi của bạn, bạn sẽ cần chức năng sau để kiểm tra xem một phần tử đã được thêm một trình nghe sự kiện cho một sự kiện được chỉ định. As regards the actual requirement of your question, you will need the following function to check whether an element has been added an event listener for a specified event.
Bước 4: Cuối cùng, bạn sẽ cần một chức năng có thể xóa trình nghe khỏi đối tượng lưu trữ. Finally, you will need a function that can delete a listener from the storage object.
Snippet: Mặc dù hơn 5 năm đã trôi qua kể từ khi OP đăng câu hỏi, tôi tin rằng những người vấp ngã trong tương lai sẽ được hưởng lợi từ câu trả lời này, vì vậy hãy thoải mái đưa ra đề xuất hoặc cải tiến cho nó. 😊 Khi chuyển các giá trị tham số, hãy sử dụng "hàm ẩn danh" gọi hàm được chỉ định với các tham số:Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Element.AdDeventListener ("Nhấp", myFunction); Hãy tự mình thử » function myFunction () {& nbsp; & nbsp; alert ("hello world!");} Thêm nhiều trình xử lý sự kiện vào cùng một phần tử Phương thức Element.AdDeventListener ("Nhấp", myFunction); Element.AdDeventListener ("Nhấp", MySecondFunction); Bạn có thể thêm trình nghe sự kiện vào bất kỳ đối tượng DOM nào không chỉ các phần tử HTML. tức là đối tượng cửa sổ. Phương pháp Khi sử dụng phương thức Bạn có thể dễ dàng xóa trình nghe sự kiện bằng cách sử dụng phương thức Cú phápElement.AddeventListener (sự kiện, chức năng, usecapture); Tham số đầu tiên là loại sự kiện (như " 0" hoặc " 1" hoặc bất kỳ sự kiện HTML DOM nào khác.)Tham số thứ hai là chức năng chúng tôi muốn gọi khi sự kiện xảy ra. Tham số thứ ba là giá trị boolean chỉ định xem có sử dụng sự kiện sủi bọt hay sự kiện. Tham số này là tùy chọn. Lưu ý rằng bạn không sử dụng tiền tố "ON" cho sự kiện; Sử dụng " 0" thay vì " 3".Thêm trình xử lý sự kiện vào một phần tửThí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Element.AdDeventListener ("Nhấp", function () {alert ("Hello World!");}); Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài: Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Element.AdDeventListener ("Nhấp", function () {alert ("Hello World!");}); Hãy tự mình thử » Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài:Element.AdDeventListener ("Nhấp", myFunction); Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài: Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài:Element.AdDeventListener ("Nhấp", myFunction); Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Element.AdDeventListener ("Nhấp", function () {alert ("Hello World!");}); Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài:Element.AdDeventListener ("Nhấp", myFunction); Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài:Element.AdDeventListener ("Nhấp", myFunction); function myFunction () {& nbsp; & nbsp; alert ("hello world!");} Thêm nhiều trình xử lý sự kiện vào cùng một phần tử Phương thức Element.AdDeventListener ("Nhấp", myFunction); Element.AdDeventListener ("Nhấp", MySecondFunction); Bạn có thể thêm các sự kiện thuộc các loại khác nhau vào cùng một phần tử:useCapture); Element.AddeventListener ("Mouseover", MyFunction); Element.AdDeventListener ("Nhấp", MySecondFunction); Element.AddeventListener ("Mouseout", Chuyện truyền thuyết); Thí dụThông báo "Xin chào Thế giới!" Khi người dùng nhấp vào một phần tử: Hãy tự mình thử » Bạn cũng có thể tham khảo chức năng "có tên" bên ngoài:Element.AdDeventListener ("Nhấp", myFunction); function myFunction () {& nbsp; & nbsp; alert ("hello world!");}Thêm nhiều trình xử lý sự kiện vào cùng một phần tử Làm thế nào để bạn kiểm tra xem có người nghe sự kiện trong JavaScript không?Nhấp chuột phải vào nút Biểu tượng Tìm kiếm và chọn Kiểm tra trực tuyến để mở các công cụ của nhà phát triển Chrome. Khi các công cụ Dev được mở, hãy chuyển sang tab Người nghe sự kiện và bạn sẽ thấy tất cả các trình nghe sự kiện bị ràng buộc với phần tử. Bạn có thể mở rộng bất kỳ trình nghe sự kiện nào bằng cách nhấp vào đầu mũi tên chỉ bên phải.
Trình nghe sự kiện nào cho kiểm soát hộp kiểm?Nhiều hộp kiểm với jQuery luôn sử dụng AddEventListener thay vì sự kiện trực tiếp như Onchange để tương thích.addEventListener instead of direct event like onchange for further compatibility.
Làm cách nào để kiểm tra xem một phần tử có sự kiện nhấp chuột không?Bạn có thể kiểm tra bằng cách cung cấp cho tham chiếu đối tượng (không phải đối tượng jQuery) cho $ .data và đối với nguồn cấp dữ liệu đối số thứ hai 'sự kiện' và điều đó sẽ trả về một đối tượng có tất cả các sự kiện như 'nhấp'.Bạn có thể lặp qua đối tượng đó và xem trình xử lý sự kiện làm gì.feeding the object reference ( not the jQuery object though ) to $. data, and for the second argument feed 'events' and that will return an object populated with all the events such as 'click'. You can loop through that object and see what the event handler does.
Làm thế nào để bạn gỡ lỗi một người nghe sự kiện?Trên trang, nhấp chuột phải vào phần tử bạn muốn gỡ lỗi người nghe sự kiện, sau đó nhấp vào Kiểm tra phần tử.Trong các trình duyệt dựa trên crom như MS Edge và Google Chrome, nhấp vào tab Người nghe sự kiện trong các công cụ phát triển.Ở đó, bạn sẽ thấy một danh sách tất cả các sự kiện đang được lắng nghe trên yếu tố đó.right-click the element you want to debug event listeners for, then click Inspect Element. In chromium-based browsers like MS Edge and Google Chrome, click the Event Listeners tab in Developer Tools. There, you'll see a list of all of the events being listened to on that element. |