001. BOM: Propiedades y Eventos

En los capítulos anteriores estuvimos trabajando el DOM, todos los conceptos básicos para poder trabajar cualquier tipo de evento. En los siguientes capítulos vamos a ver la parte del BOM (Browser Object Model), que es una serie de métodos y objetos que cuelgan directamente de la ventana del navegador, es decir, de  window.

En este primer capítulo vamos a ver dos propiedades muy importantes, que son innerWidth, innerHeight, outerWidth y outerHeight

innerWidth

Esta propiedad  hace referencia al tamaño del ancho del viewport (parte visible) de nuestra ventana.

innerHeight

Esta propiedad hace referencia al tamaño del alto del viewport (parte visible) de nuestra ventana.

outerWidth

Es la propiedad que hace referencia al ancho de nuestro navegador.

outerHeight

Es la propiedad que hace referencia al alto de nuestro navegador.

Ejm

console.log(window.innerWidth);
console.log(window.innerHeight);
console.log(window.outerWidth);
console.log(window.outerHeight);

Vamos a ver otro ejm.

window.addEventListener("resize", e => {
  console.clear();
  console.log("--Resize--");
  console.log(window.innerWidth);
  console.log(window.innerHeight);
  console.log(window.outerWidth);
  console.log(window.outerHeight);
  console.log(e); 
};

Otras propiedades

Tenemos otras propiedades importantes como son:

Control del desplazamiento del scroll

Tenemos dos propiedades para ello, son scrollX y scrollY. Para ello vamos a utilizar un evento denominado justamente scroll. Vamos a hacer un ejercicio para entender su funcionamiento.

Ejm

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Control de desplazamiento del Scroll</title>
</head>

<body>
<h1>Control de desplazamiento del Scroll</h1>
<h2 style="width: 2000px;">Manejo del BOM</h2>

<script>
  window.addEventListener("scroll", e => {
  console.clear();
  console.log("Evento Scroll");
  console.log(window.scrollX);
  console.log(window.scrollY);
})
</script>
</body>
</html>

Coordenadas de la pantalla

Tenemos más propiedades, por ejm, en que coordenada de nuestra pantalla comienza a dibujarse la ventana de nuestro navegador, para ello podemos hacer uso de las propiedades screenX y screenY. Para ello vamos a utilizar un evento denominado load.

Ejm

window.addEventListener("load", e => {
  console.log(window.screenX);
  console.log(window.screenY);
});

Cuando termine de cargar la ventana aparecerán los consoles. Si hemos trabajado con jQuery, es el típico $(load).

Evento DOMContentLoaded

Este evento funciona como el evento load, pero es mucho más rápido.

Ejm

document.addEventListener("DOMContentLoaded", e => {
  console.log(window.screenX);
  console.log(window.screenY);
});

DOMContentLoaded  se puede utilizar para peticiones asíncronas al consumo de APIs, o esperar la respuesta de la conexión a una base de datos. Es una mejor práctica hacer uso de este evento en lugar del evento load.

Nota: uno de los errores frecuentes es utilizar el evento load para inicializar algunas cargas de nuestro sitio, cuando DOMContentLoaded es mucho más apropiado.

Scroll al inicio