document
Ve window
farklı nesnelerdir ve bunlar bazı farklı etkinlik. addEventListener()
Onları kullanmak farklı bir nesne için hedeflenen olayları dinler. İlgilendiğiniz etkinliğe gerçekten sahip olanı kullanmalısınız.
Örneğin "resize"
, window
nesne üzerinde, nesne üzerinde olmayan bir olay vardır document
.
Örneğin, "DOMContentLoaded"
olay yalnızca document
nesnenin üzerindedir.
Temel olarak, ilgilendiğiniz olayı hangi nesnenin aldığını bilmeniz ve .addEventListener()
o nesne üzerinde kullanmanız gerekir .
Hangi nesne türlerinin hangi olay türlerini oluşturduğunu gösteren ilginç bir grafik: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference
Yayılan bir etkinliği (click olayı gibi) dinliyorsanız, o olayı belge nesnesinde veya pencere nesnesinde dinleyebilirsiniz. Yayılan olaylar için tek temel fark zamanlamadır. Olay , hiyerarşide ilk gerçekleştiği için document
nesneden önce window
nesneye çarpar, ancak bu fark genellikle önemsizdir, böylece ikisini de seçebilirsiniz. Çoğaltılmış olayları işlerken ihtiyaçlarınızı karşılayan olayın kaynağına en yakın nesneyi seçmek genellikle daha iyi olur. Yani almak öneririm document
üzerinde window
de işe ne zaman. Ancak, genellikle kaynağa daha da yaklaşırım ve document.body
hatta belgedeki ortak bir ebeveyni (mümkünse) kullanırdım.