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