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
или даже использовал более близкого общего родителя в документе (если это возможно).