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або навіть якийсь ближчий спільний батьків у документі (якщо це можливо).