documentและwindowเป็นวัตถุที่แตกต่างกันและพวกเขามีเหตุการณ์บางอย่างที่แตกต่างกัน การใช้addEventListener()กับพวกเขาฟังเหตุการณ์ที่กำหนดไว้สำหรับวัตถุอื่น คุณควรใช้อันที่มีเหตุการณ์ที่คุณสนใจจริงๆ
ตัวอย่างเช่นมี"resize"เหตุการณ์บนwindowวัตถุที่ไม่ได้อยู่บนdocumentวัตถุ
ตัวอย่างเช่น"DOMContentLoaded"เหตุการณ์อยู่บนdocumentวัตถุเท่านั้น
โดยพื้นฐานแล้วคุณต้องรู้ว่าวัตถุใดได้รับเหตุการณ์ที่คุณสนใจและใช้.addEventListener()กับวัตถุนั้น ๆ
นี่คือแผนภูมิที่น่าสนใจที่แสดงให้เห็นว่าวัตถุประเภทใดสร้างเหตุการณ์ประเภทใด: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference
หากคุณกำลังฟังเหตุการณ์ที่แพร่กระจาย (เช่นเหตุการณ์การคลิก) คุณสามารถฟังเหตุการณ์นั้นได้จากวัตถุเอกสารหรือวัตถุหน้าต่าง ความแตกต่างหลักประการเดียวสำหรับเหตุการณ์ที่เผยแพร่คือเวลา เหตุการณ์จะกระทบdocumentวัตถุก่อนwindowวัตถุเนื่องจากเกิดขึ้นก่อนในลำดับชั้น แต่โดยปกติความแตกต่างนั้นจะไม่มีสาระสำคัญดังนั้นคุณจึงสามารถเลือกอย่างใดอย่างหนึ่งได้ ฉันพบว่าโดยทั่วไปแล้วการเลือกวัตถุที่ใกล้เคียงที่สุดกับแหล่งที่มาของเหตุการณ์ที่ตรงกับความต้องการของคุณเมื่อจัดการกับเหตุการณ์ที่เผยแพร่ ที่จะแนะนำให้คุณเลือกdocumentมากกว่าwindowเมื่อทั้งการทำงานจะ แต่ฉันมักจะขยับเข้าไปใกล้แหล่งที่มาและใช้งานdocument.bodyหรือแม้แต่ผู้ปกครองทั่วไปที่ใกล้ชิดกว่าในเอกสาร (ถ้าเป็นไปได้)