History.replaceState()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Метод History.replaceState()
изменяет текущую запись в истории, заменяя её на значения stateObj
, title
и URL
, передаваемые в параметрах метода. Данный метод особенно полезен, когда вы хотите обновить объект состояния или URL текущей записи в истории в ответ на какое-то действие пользователя.
Синтаксис
history.replaceState(stateObj, title, [url])
Параметры
stateObj
-
Объект состояния – это JavaScript-объект, связанный с записью в истории, переданной в метод
replaceState()
. Объект состояния может бытьnull
. title
-
Заголовок - все браузеры, кроме Safari, на данный момент игнорируют этот параметр, но могут начать использовать в будущем. Ввиду будущих изменений метода, безопасным решением является передача пустой строки. В качестве альтернативы вы можете передать короткий заголовок для состоянии, в которое переходите.
url
Необязательный-
URL-адрес записи в истории. Новый URL должен вести на тот же домен, протокол и порт, иначе pushState() выдаст исключение.
Примеры
Предположим, на странице http://mozilla.org/foo.html
выполняется следующий JavaScript-код:
let stateObj = { foo: "bar" } history.pushState(stateObj, "page 2", "bar.html")
Объяснение этих двух строк можно найти в приведённом выше разделе пример метода pushState().
Далее, предположим, на странице http://mozilla.org/bar.html
выполняется JavaScript-код:
history.replaceState(stateObj, "page 3", "bar2.html")
Это приведёт к тому, что в URL-строке отобразится адрес http://mozilla.org/bar2.html
, но браузер не станет сразу загружать bar2.html
и даже не станет проверять наличие этой страницы bar2.html
.
Теперь предположим, что пользователь переходит по адресу http://www.microsoft.com
, а затем нажимает на кнопку "Назад". В этом случае в URL-строке отобразится http://mozilla.org/bar2.html
. Если же пользователь снова нажмёт на кнопку "Назад", в URL-строке отобразится http://mozilla.org/foo.html
и полностью обойдёт bar.html
.
Спецификации
Specification |
---|
HTML Standard # dom-history-replacestate-dev |
Совместимость с браузерами
BCD tables only load in the browser