--- title: History.pushState() slug: Web/API/History/pushState tags: - API - HTML DOM - Web - метод translation_of: Web/API/History/pushState ---
{{APIRef("DOM")}}
В HTML документе метод history.pushState()
добавляет новое состояние в историю браузера
history.pushState(state, title[, url])
state object
pushState()
. Всякий раз, когда пользователь переходит к новому состоянию, происходит событие popstate
, а свойство state
этого события содержит копию объекта состояния с записями истории.pushState()
выдаст исключение. Если вам нужно хранилище большего размера, следует рассмотреть использование sessionStorage
и/или localStorage
.url
{{optional_inline}}pushState()
, но может попытаться сделать это позже, например, после того, как пользователь перезапустит браузер. Новый URL-адрес не обязан быть абсолютным; если он относительный, то определяется относительно текущего URL. Новый URL должен вести на тот же домен, протокол и порт, иначе pushState()
выдаст исключение. Данный параметр не является обязательным; если он не указан, будет использоваться URL текущего документа.Вызов pushState()
в некоторой степени похож на установку window.location = "#foo"
, поскольку они оба также создают и активируют ещё одну запись в истории, связанную с текущим документом.
Но у pushState()
есть несколько преимуществ:
window.location
оставляет вас на том же {{ domxref("document") }} лишь в том случае, если вы меняете только хэшwindow.location = "#foo";
создаёт новую запись в истории, только если текущий хеш не #foo
title
впоследствии используется браузерами, эти данные могут быть использованы (независимо от, скажем, хеша).Обратите внимание, что pushState()
никогда не вызывает событие hashchange
, даже если новый URL отличается от старого только хешем.
Создание новой записи истории браузера, задавая state, title, и url.
const state = { 'page_id': 1, 'user_id': 5 } const title = '' const url = 'hello-world.html' history.pushState(state, title, url)
{{Compat}}