History API

El History API nos permite cambiar la URL del navegador sin refrescar la página, ver el número de URL's visitadas (la historia) y navegar por la historia de URL's (ir atrás o adelante).

El History API es muy útil en aplicaciones que nunca se refrescan, también conocidas como SPAs (Single Page Applications).

El objeto principal para utilizar el History API se llama history.

Cambiando la ruta de la URL

Para cambiar la ruta de la URL utiliza los métodos pushState y replaceState de history.

La diferencia entre los dos métodos es que pushState agrega una entrada a la historia de URLs mientras que replaceState reemplaza la última entrada.

pushState y replaceState reciben tres argumentos: un objeto, un título y la nueva ruta.

// agrega una ruta /users a la historia de la sesión
history.pushState(null, null, "users");

Puedes abrir la consola en las herramientas del desarrollador y ejecutar esa línea sobre cualquier sitio o aplicación Web. La ruta de la URL debería cambiar a /users.

Atrás y adelante

Para navegar en la historia utiliza los métodos back y forward del objeto history. Es lo equivalente a oprimir el botón atrás o adelante del navegador.

// equivalente a oprimir el botón de atrás del navegador
history.back();
// equivalente a oprimir el botón de adelante del navegador
history.forward();

Eventos sobre la historia

Cuando una persona oprime el botón atrás o adelante, o se ejecutan los métodos back y forward del history, se dispara el evento popstate sobre window:

window.onpopstate = function(e) {
alert("location: " + document.location + ", state: " + JSON.stringify(e.state));
};