--- 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"; создаёт новую запись в истории, только если текущий хеш не #footitle впоследствии используется браузерами, эти данные могут быть использованы (независимо от, скажем, хеша).Обратите внимание, что 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}}