Hay dos conceptos que debes de tener en cuenta, uno de ellos es la carga del DOM y la otra es la carga de los elementos de la pagina web. Hay una sutil diferencia. Cuando se carga el DOM, significa que todos los elementos html se han cargado y son accesibles, aún si sus contenidos no están totalmente cargados (como las imagenes por ejemplo)
window.load lo que hace es que cuando se cargue tanto el DOM como los contenidos de la pagina se ejecute la función que determinamos (en este caso añadir un listener a un div). Si no quieres hacer esto para no esperar la "eternidad" a que este disponible todo tienes dos opciones.
1. Ejecutar las acciones
cuando el DOM este listo (usando la función domReady de la respuesta aceptada).
2. Colocar los scripts antes de cerrar body para garantizar que los elementos del DOM que queremos acceder ya estén disponibles (recuerda de que el DOM se carga de arriba a abajo)
Saludos