Die document
und window
sind verschiedene Objekte und sie haben verschiedene Ereignisse. Verwenden vonaddEventListener()
sie verwenden, werden Ereignisse abgehört, die für ein anderes Objekt bestimmt sind. Sie sollten diejenige verwenden, die tatsächlich das Ereignis hat, an dem Sie interessiert sind.
Beispielsweise gibt es ein "resize"
Ereignis für das window
Objekt, das sich nicht auf dem document
Objekt befindet.
Beispielsweise befindet sich das "DOMContentLoaded"
Ereignis nur auf dem document
Objekt.
Grundsätzlich müssen Sie wissen, welches Objekt das Ereignis empfängt, an dem Sie interessiert sind, und es .addEventListener()
für dieses bestimmte Objekt verwenden.
Hier ist ein interessantes Diagramm, das zeigt, welche Objekttypen welche Ereignistypen erstellen: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference
Wenn Sie ein weitergegebenes Ereignis (z. B. das Klickereignis) abhören, können Sie dieses Ereignis entweder im Dokumentobjekt oder im Fensterobjekt abhören. Der einzige Hauptunterschied für propagierte Ereignisse besteht im Timing. Das Ereignis trifft das document
Objekt vor dem window
Objekt, da es zuerst in der Hierarchie auftritt. Dieser Unterschied ist jedoch normalerweise unerheblich, sodass Sie beide auswählen können. Ich finde es im Allgemeinen besser, das Objekt auszuwählen, das der Quelle des Ereignisses am nächsten liegt und Ihren Anforderungen bei der Behandlung von propagierten Ereignissen entspricht. Das würde vorschlagen , dass Sie holen document
über , window
wenn entweder funktioniert. Aber ich bin oft noch näher an die Quelle herangekommen und habe ( document.body
oder wenn möglich) ein näheres gemeinsames übergeordnetes Element im Dokument verwendet.