El document
y window
son objetos diferentes y tienen algunos eventos diferentes. Usar addEventListener()
en ellos escucha eventos destinados a un objeto diferente. Debe usar el que realmente tiene el evento que le interesa.
Por ejemplo, hay un "resize"
evento en el window
objeto que no está en el document
objeto.
Por ejemplo, el "DOMContentLoaded"
evento es solo en el document
objeto.
Básicamente, debe saber qué objeto recibe el evento que le interesa y utilizarlo .addEventListener()
en ese objeto en particular.
Aquí hay un gráfico interesante que muestra qué tipos de objetos crean qué tipos de eventos: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference
Si está escuchando un evento propagado (como el evento de clic), puede escuchar ese evento en el objeto del documento o en el objeto de la ventana. La única diferencia principal para los eventos propagados está en el tiempo. El evento golpeará el document
objeto antes que el window
objeto ya que ocurre primero en la jerarquía, pero esa diferencia generalmente es irrelevante para que pueda elegir cualquiera de los dos. En general, me parece mejor elegir el objeto más cercano a la fuente del evento que satisfaga sus necesidades al manejar eventos propagados. Eso hace pensar que usted escoja document
más window
cuando cualquiera va a funcionar. Pero, a menudo me acerco aún más a la fuente y uso document.body
o incluso a un padre común más cercano en el documento (si es posible).