ฉันจะดูเหตุการณ์ที่เกิดขึ้นกับองค์ประกอบใน Chrome DevTools ได้อย่างไร


603

ฉันมีองค์ประกอบของฟอร์มที่ปรับแต่งได้บนเพจจากไลบรารี ฉันต้องการดูว่ามีการใช้งานเหตุการณ์จาวาสคริปต์เมื่อฉันโต้ตอบกับมันเพราะฉันกำลังพยายามค้นหาว่าจะใช้ตัวจัดการเหตุการณ์ใด

ฉันจะทำเช่นนั้นโดยใช้ Chrome Web Developer ได้อย่างไร


13
bookmarklet นี้มีประโยชน์: sprymedia.co.uk/article/Visual+Event+2
scytale

1
คำตอบที่นี่มีค่า แต่ที่คั่นหนังสือด้านบน ^ เป็นจริงสิ่งที่แก้ไขปัญหาของฉัน sprymedia.co.uk/article/Visual+Event+2
Jazzy

คำตอบ:


877
  • กดF12เพื่อเปิดเครื่องมือ Dev
  • คลิกที่แท็บ Sources
  • ทางด้านขวาเลื่อนลงไปที่ "จุดพักการฟังเหตุการณ์" และขยายแผนผัง
  • คลิกที่กิจกรรมที่คุณต้องการฟัง
  • โต้ตอบกับองค์ประกอบเป้าหมายหากพวกเขายิงคุณจะได้รับจุดพักในดีบักเกอร์

ในทำนองเดียวกันคุณสามารถคลิกขวาที่องค์ประกอบเป้าหมาย -> เลือก "ตรวจสอบองค์ประกอบ" เลื่อนลงทางด้านขวาของกรอบ dev ที่ด้านล่างคือ 'ผู้ฟังเหตุการณ์' ขยายแผนผังเพื่อดูว่ามีเหตุการณ์ใดเชื่อมต่อกับองค์ประกอบ ไม่แน่ใจว่าสามารถใช้งานได้กับเหตุการณ์ที่จัดการผ่าน bubbling หรือไม่ (ฉันเดาไม่ได้)


11
วิธีการแก้ปัญหานี้เป็นปัญหาถ้ามันเป็นเหตุการณ์เมาส์ที่คุณเป็นหลังจากที่เบรกพอยต์ฆ่าไหล
WendyG

67
จะเกิดอะไรขึ้นถ้าเหตุการณ์ทั้งหมดชี้ไปที่ jQuery แบบย่อที่ฉันไม่สนใจฉันจะไปยังฟังก์ชันที่ใช้ jquery นั้นได้อย่างไร
มูฮัมหมัดอูเมอ

14
มันสามารถแสดงกิจกรรมที่กำหนดเองซึ่งฉันสร้างขึ้นได้ไหม เมื่อฉันอ่านมันเปลี่ยนชีวิตที่เป็นสิ่งแรกที่ฉันคิด ฉันจะพลาดอะไรบางอย่าง?
Tebe

24
@MuhammadUmer คุณสามารถ blackbox jQuery ดังนั้น Chrome จะข้ามมันและตรงไปที่ซอร์สโค้ดของคุณ developer.chrome.com/devtools/docs/blackboxing
Matt Zeunert

1
@ MuhammadUmer ถ้าคุณหยุดใช้ JQuery ล่ะ
John Balvin Arias

831

คุณสามารถใช้ฟังก์ชันmonitorEvents

เพียงตรวจสอบองค์ประกอบของคุณ ( right mouse clickInspectองค์ประกอบที่มองเห็นได้หรือไปที่Elementsแท็บในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome และเลือกองค์ประกอบที่ต้องการ) จากนั้นไปที่Consoleแท็บและเขียน:

monitorEvents($0)

ตอนนี้เมื่อคุณเลื่อนเมาส์ไปที่องค์ประกอบนี้โฟกัสหรือคลิกมันชื่อของเหตุการณ์ที่เกิดขึ้นจะถูกแสดงพร้อมกับข้อมูลของมัน

หากต้องการหยุดรับข้อมูลนี้เพียงแค่เขียนสิ่งนี้ลงในคอนโซล:

unmonitorEvents($0)

$0เป็นเพียงองค์ประกอบ DOM ล่าสุดที่เลือกโดยเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome คุณสามารถส่งผ่านวัตถุ DOM อื่น ๆ ที่นั่น (ตัวอย่างเช่นผลลัพธ์ของgetElementByIdหรือquerySelector)

คุณยังสามารถระบุเหตุการณ์ "type" เป็นพารามิเตอร์ตัวที่สองเพื่อ จำกัด กิจกรรมที่ถูกตรวจสอบให้แคบลงบางชุดที่กำหนดไว้ล่วงหน้า ตัวอย่างเช่น:

monitorEvents(document.body, 'mouse')

รายการประเภทที่มีอยู่นี้อยู่ที่นี่

ฉันสร้าง gif ขนาดเล็กซึ่งแสดงให้เห็นว่าคุณลักษณะนี้ทำงานอย่างไร:

การใช้งานฟังก์ชั่น monitorEvents


2
ตกลง นี่คือวิธี defacto ในการตรวจสอบและติดตามเหตุการณ์ในองค์ประกอบเฉพาะ
dmackerman

1
อ่าใช่ฉันเห็นแล้ว มันเป็น "undefined" ที่ทำให้ฉันผิดหวัง แต่ตอนนี้ฉันเห็นคุณมีเหมือนกันในภาพเคลื่อนไหว GIF ที่เป็นประโยชน์ของคุณ ขอบคุณ
MSC

1
เครื่องมือใดที่คุณใช้ทำ gif
JerryGoyal

3
@MariuszPawelski วิธีการต่อจากที่นี่? ฉันทำสิ่งนี้และพบเหตุการณ์คลิกซึ่งเป็นกิจกรรมที่ฉันสนใจ แต่ฉันจะค้นหาสิ่งที่เกิดขึ้นเมื่อฉันคลิกที่องค์ประกอบได้อย่างไร รหัสประเภทใดที่ถูกเรียกใช้งาน? คุณสมบัติที่MouseEventฉันควรจะค้นหา?
Utku

3
แต่จะหาตัวจัดการเช่นคลิกตัวจัดการ
Sheikh Abdul Wahid

26

Visual Eventเป็น bookmarklet เล็ก ๆ น้อย ๆ ที่คุณสามารถใช้เพื่อดูตัวจัดการเหตุการณ์ขององค์ประกอบ เมื่อวันที่สาธิตออนไลน์สามารถดูได้ที่นี่


22

สำหรับ jQuery (อย่างน้อยรุ่น 1.11.2) ขั้นตอนต่อไปนี้ใช้ได้สำหรับฉัน

  1. คลิกขวาที่องค์ประกอบแล้วเปิด 'เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome'
  2. พิมพ์$._data(($0), 'events');ใน 'คอนโซล'
  3. ขยายวัตถุที่แนบมาและดับเบิลคลิกที่handler:ค่า
  4. นี่แสดงรหัสแหล่งที่มาของฟังก์ชั่นที่แนบมาค้นหาส่วนหนึ่งของที่ใช้แท็บ 'ค้นหา'

และถึงเวลาที่จะหยุดการคิดค้นวงล้อใหม่และเริ่มใช้เหตุการณ์วานิลลา JS ... :)

วิธีการหา-jQuery คลิกจัดการฟังก์ชั่น


15

สิ่งนี้จะไม่แสดงเหตุการณ์ที่กำหนดเองเช่นที่สคริปต์ของคุณอาจสร้างขึ้นหากเป็นปลั๊กอิน jquery ตัวอย่างเช่น :

jQuery(function($){
 var ThingName="Something";

 $("body a").live('click', function(Event){
   var $this = $(Event.target);
       $this.trigger(ThingName + ":custom-event-one");
 });

 $.on(ThingName + ":custom-event-one", function(Event){
   console.log(ThingName, "Fired Custom Event: 1", Event);
 })

});

แผงกิจกรรมภายใต้สคริปต์ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome จะไม่แสดง "Something: custom-event-one"


21
แล้วจะพบเหตุการณ์เหล่านั้นได้อย่างไร?
Calydon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.