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