Eventos de JavaScript – Diferencias entre window y document, load y DOMContentLoaded

JavaScript es un lenguaje de programación que se utiliza comúnmente para interactuar con el DOM y para realizar otras tareas relacionadas con el navegador. Uno de los conceptos más importantes en JavaScript son los eventos, que se utilizan para detectar cuando ocurre una acción en la página web, como hacer clic en un botón o cargar una imagen.

En JavaScript, existen dos objetos principales que se utilizan para agregar eventos a una página web: window y document. Ambos objetos tienen diferentes propósitos y se utilizan para escuchar eventos en diferentes partes de la página.

 

El objeto window

window representa la ventana del navegador que contiene la página web. Este objeto se utiliza para escuchar eventos que ocurren en la ventana del navegador, como cuando la ventana se carga completamente o cuando el tamaño de la ventana cambia.

 

El objeto document

Por otro lado, document representa el documento HTML cargado en esa ventana del navegador. Este objeto se utiliza para escuchar eventos que ocurren dentro del documento HTML cargado en la ventana del navegador, como cuando un usuario hace clic en un elemento en la página o cuando se envía un formulario.

 

Diferencias entre window y document

Cuando se utiliza window.addEventListener o document.addEventListener, es importante tener en cuenta que cada objeto tiene un alcance diferente. window.addEventListener se utiliza para escuchar eventos que ocurren en la ventana del navegador, mientras que document.addEventListener se utiliza para escuchar eventos que ocurren en el documento HTML cargado en esa ventana.

En resumen, window y document son dos objetos importantes en JavaScript que se utilizan para agregar eventos a una página web. Ambos objetos tienen diferentes propósitos y se utilizan para escuchar eventos en diferentes partes de la página. Al entender la diferencia entre estos dos objetos, se puede crear un código más eficiente y efectivo para interactuar con el DOM y para realizar otras tareas relacionadas con el navegador.

Ejemplos donde sería adecuado utilizar window:

Escuchar el evento resize de la ventana del navegador para ajustar el tamaño de un elemento en la página web:

window.addEventListener('resize', function() {
  // Actualizar el tamaño de un elemento en la página web
});

 

Ejemplos donde sería adecuado utilizar document:

Escuchar el evento submit de un formulario en la página web para enviar datos a un servidor:

document.addEventListener('submit', function(event) {
  event.preventDefault();
  // Obtener los datos del formulario y enviarlos a un servidor
});

 

El evento load

El evento load se dispara cuando se completa la carga de toda la página, incluyendo imágenes, scripts y otros recursos externos. Es decir, este evento no se dispara hasta que todos los elementos de la página se han cargado por completo, lo que puede tardar más tiempo en páginas con muchos recursos.

 

El evento DOMContentLoaded

Por otro lado, el evento DOMContentLoaded se dispara cuando se ha cargado el HTML y se ha construido el DOM de la página. Esto significa que los scripts y otros recursos externos aún pueden estar cargando, pero el DOM ya está disponible para ser manipulado.

 

Diferencias entre load y DOMContentLoaded

Por lo tanto, la principal diferencia entre load y DOMContentLoaded es el momento en que se dispara el evento. load se dispara cuando todo se ha cargado completamente, mientras que DOMContentLoaded se dispara cuando solo se ha cargado el HTML y el DOM está disponible para ser manipulado.

En general, es una buena práctica utilizar DOMContentLoaded en lugar de load cuando se está trabajando con el DOM, ya que permite ejecutar el código JavaScript antes de que se hayan cargado todos los recursos de la página, lo que puede mejorar el rendimiento y la experiencia del usuario. Sin embargo, si se necesita esperar a que se carguen todos los recursos de la página antes de ejecutar el código, entonces load es la mejor opción.

Ejemplo donde sería adecuado utilizar load:

cargar un mapa de OpenStreetMap

window.addEventListener('load', function() {
  var map = L.map('map').setView([51.505, -0.09], 13);
  L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',
    maxZoom: 18
  }).addTo(map);
});

 

Ejemplo donde sería adecuado utilizar DOMContentLoaded:

Mostrar o esconder un elemento en la página web cuando se haya cargado el DOM:

document.addEventListener('DOMContentLoaded', function() {
  var boton = document.querySelector('#mi-boton');
  boton.addEventListener('click', function() {
    var elemento = document.querySelector('#mi-elemento');
    elemento.classList.toggle('escondido');
  });
});

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *