--- title: History.pushState() slug: Web/API/History/pushState tags: - API - DOM HTML - Historial de navegación - History - History API - Navegador - Sesion - URL - Web - historial - pushState translation_of: Web/API/History/pushState ---
En un documento HTML, el método history.pushState()
anexa un registro en la sesión de historial del navegador.
history.pushState(state, title, [url])
state
state
es un objeto de JavaScript asociado al nuevo registro en el historial creado por pushState()
. Cuando el usuario navega al nuevo registro, un evento {{event("popstate")}} es accionado, y la propiedad state
del evento contiene una copia del objeto state
del registro en el historial.state
puede ser cualquier cosa que pueda ser serializada. Porque Firefox guarda los objetos state
en el disco del usuario para que así puedan ser restaurados luego de que el usuario reinicia el navegador, se impone un límite de 640k caracteres en la representación serializada de un objeto state
. Si pasas un objeto state
con una representación serializada más grande que lo mencionado, a pushState()
, el método arrojará una excepción. Si necesitas más espacio que el mencionado, es recomendable que uses {{domxref("Window.sessionStorage", "sessionStorage")}} y/o {{domxref("Window.localStorage", "localStorage")}}.title
url
{{optional_inline}}pushState()
, pero podría intentar cargar esta URL luego, por ejemplo, luego de que el usuario reinicie el navegador. La nueva URL no necesita ser absoluta; puede ser relativa a la URL actual. La nueva URL debe tener el mismo {{glossary("origin")}} que la URL actual; de otra manera, pushState()
arrojará una excepción. Si este parámetro no es especificado, por defecto se usa la URL del documento actual.En cierto sentido, llamar a pushState()
es similar a window.location = "#foo"
, ambos crearán y activarán un nuevo registro en el historial asociado al documento actual. Pero pushState()
tiene unas ventajas adicionales:
window.location = "#foo";
sólo crea un nuevo registro en el historial si el hash actual no es #foo
.Cabe destacar que pushState()
nunca hace que el evento {{event("hashchange")}} sea accionado, incluso si la nueva URL difiere de la URL antigua sólo en su hash.
En otros documentos, crea u nelemento con una URI null
.
Esto crea un nuevo registro en el historial del navegador, estableciendo state
, title
, y url
.
const state = { 'page_id': 1, 'user_id': 5 } const title = '' const url = 'hello-world.html' history.pushState(state, title, url)
Especificación | Estado | Comentario |
---|---|---|
{{SpecName('HTML WHATWG', "history.html#dom-history-pushstate", "History.pushState()")}} | {{Spec2('HTML WHATWG')}} | Ningún cambio desde {{SpecName("HTML5 W3C")}}. |
{{SpecName('HTML5 W3C', "history.html#dom-history-pushstate", "History.pushState()")}} | {{Spec2('HTML5 W3C')}} | Definición Inicial. |
{{Compat("api.History.pushState")}}