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
หรือแม้แต่ผู้ปกครองทั่วไปที่ใกล้ชิดกว่าในเอกสาร (ถ้าเป็นไปได้)