javascript-browser-object-model

Qué es el BOM en JavaScript

El BOM (Browser Object Model) es un conjunto de interfaces y objetos en JavaScript que permiten interactuar con el navegador y su entorno (como la ventana, la pantalla, la URL y el historial).

A diferencia del Document Object Model (DOM), que manipula el contenido de la página web, el BOM está orientado a interactuar con el navegador y sus características.

Los principales elementos que conforman el Browser Object Model (BOM) son:

Elemento del BOMDescripción
windowRepresenta la ventana del navegador
navigatorProporciona información sobre el navegador
screenRepresenta la pantalla del usuario
locationContiene información sobre la URL actual (permite cambiarla)
documentRepresenta el contenido de la página web
historyPermite manipular el historial de navegación del navegador,
consoleProporciona métodos para la depuración
performanceProporciona acceso a la información de rendimiento de la página web
applicationCachePermite acceder a la caché de la aplicación (en desuso)

Vamos a ver cada uno de ellos en detalle 👇

Ventana del navegador window

El objeto global window representa la ventana del navegador y es la raíz del BOM. A través de window se pueden acceder a muchas de las propiedades y métodos del BOM.

ComandoDescripción
window.innerHeightObtiene la altura de la ventana del navegador.
window.innerWidthObtiene el ancho de la ventana del navegador.
window.resizeTo(500, 500)Cambia el tamaño de la ventana a 500x500 píxeles.
window.status = "Cargando..."Modifica el texto de la barra de estado.
window.setDefaultStatus("Listo")Establece el texto predeterminado de la barra de estado.

Por ejemplo,

console.log(window.innerHeight); // Altura de la ventana
console.log(window.innerWidth); // Ancho de la ventana

Información del navegador navigator

El objeto navigator proporciona información sobre el navegador que está siendo utilizado. Entre otras cosas, se puede utilizar para detectar el nombre y la versión del navegador, así como la plataforma en la que se está ejecutando.

ComandoDescripción
navigator.userAgentMuestra información sobre el navegador.
navigator.platformMuestra la plataforma en la que se ejecuta el navegador.

Por ejemplo,

console.log(navigator.userAgent); // Información sobre el navegador
console.log(navigator.platform); // Plataforma en la que se está ejecutando

Información de la pantalla screen

El objeto screen representa la pantalla del usuario y proporciona información sobre su tamaño y resolución.

ComandoDescripción
screen.widthObtiene el ancho de la pantalla.
screen.heightObtiene la altura de la pantalla.
screen.availWidthAncho disponible de la pantalla.
screen.availHeightAltura disponible de la pantalla.
screen.pixelDepthProfundidad de píxeles de la pantalla.

Por ejemplo,

console.log(screen.width); // Ancho de la pantalla
console.log(screen.height); // Altura de la pantalla
console.log(screen.availWidth); // Ancho disponible de la pantalla
console.log(screen.availHeight); // Altura disponible de la pantalla
console.log(screen.pixelDepth); // Profundidad de píxeles de la pantalla

Información de la URL location

El objeto location proporciona información sobre la URL actual y permite redirigir a otras páginas.

ComandoDescripción
location.hrefObtiene la URL actual.
location.hostObtiene el host de la URL actual.
location.pathnameObtiene la ruta de la URL actual.
location.href = "https://www.ejemplo.com"Redirige a otra página.

Por ejemplo,

console.log(location.href); // URL actual
console.log(location.host); // Host de la URL actual
console.log(location.pathname); // Ruta de la URL actual
location.href = "https://www.ejemplo.com"; // Redireccionar a otra página

Documento document

El objeto document representa la página web cargada en la ventana del navegador y es la raíz del DOM.

ComandoDescripción
document.titleObtiene el título de la página.
document.bodyObtiene el cuerpo de la página.

Por ejemplo,

 // Título de la página
console.log(document.title);

// Cuerpo de la página
console.log(document.body); 

// Elemento con el ID "miElemento"
console.log(document.getElementById("miElemento")); 

Historial del navegador history

JavaScript permite modificar el historial del navegador utilizando el objeto history. Por ejemplo, podemos agregar una nueva entrada en el historial del navegador utilizando el método pushState().

ComandoDescripción
history.pushState(...)Agrega una nueva entrada al historial con una URL modificada.
history.replaceState(...)Reemplaza la entrada actual del historial con una nueva URL.

Por ejemplo,

// agrega una nueva entrada en el historial del navegador 
// con una URL que contiene el parámetro `page` con el valor `1`.
history.pushState({page: 1}, "Title", "?page=1");

// reemplaza la entrada actual en el historial con una nueva entrada 
// con una URL que contiene el parámetro `page` con el valor `2`.
history.replaceState({page: 2}, "Title", "?page=2");

Información de rendimiento performance

El objeto performance proporciona acceso a la información relacionada con el rendimiento de la página web, como los tiempos de carga y los eventos de navegación.

ComandoDescripción
performance.now()Devuelve el tiempo en milisegundos desde que comenzó la navegación o la carga de la página.
performance.timingProporciona un objeto con detalles sobre los tiempos de navegación y carga de la página.
performance.getEntries()Devuelve todas las entradas de rendimiento disponibles.

Por ejemplo, para medir el tiempo exacto transcurrido desde que se cargó la página:

// Tiempo en milisegundos desde el inicio de la carga
console.log(performance.now()); 

Esto es útil para medir la velocidad de carga de la página, analizar el rendimiento de la aplicación y realizar optimizaciones basadas en los datos recolectados.

Caché de la aplicación applicationCache

El objeto applicationCache permite gestionar la caché de la aplicación web, lo que facilita el almacenamiento de recursos (como archivos CSS, imágenes y JavaScript) para su uso offline.

ComandoDescripción
applicationCache.statusDevuelve el estado actual del caché de la aplicación.
applicationCache.update()Fuerza la actualización de la caché de la aplicación.

Por ejemplo, para verificar el estado de la caché de la aplicación:

// Estado de la caché (por ejemplo, 0 = no caché, 1 = caché en uso)
console.log(applicationCache.status); 

También podemos añadir eventos relacionados con el estado de la caché, como cached, updateready, y error.

applicationCache.addEventListener("event", callback)

Este objeto está en desuso (en favor de los Service Workers), aunque puede seguir siendo útil para aplicaciones más antiguas que necesitan acceso a la caché del navegador.