Spec-Zone.ru › Web APIs

История: метод replaceState()

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

Метод replaceState() интерфейса History изменяет текущую запись истории, заменяя её объектом состояния и URL, переданными в параметрах метода. Этот метод особенно полезен, когда необходимо обновить объект состояния или URL текущей записи истории в ответ на какое-либо действие пользователя.

Синтаксис

replaceState(state, unused)
replaceState(state, unused, url)

Параметры

state

Объект, связанный с записью истории, переданной методу replaceState(). Объект состояния может быть null.

unused

Этот параметр существует по историческим причинам и не может быть опущен; передача пустой строки является традиционной и безопасной против будущих изменений метода.

url Необязательно

URL записи истории. Новый URL должен быть того же происхождения, что и текущий URL; в противном случае метод replaceState() вызывает исключение.

Возвращаемое значение

None (undefined).

Исключения

SecurityError DOMException

Вызывается, если связанный документ не полностью активен или переданный параметр url не является допустимым URL. Браузеры также ограничивают навигацию и могут вызвать эту ошибку, сгенерировать предупреждение или проигнорировать вызов, если он слишком часто вызывается.

DataCloneError DOMException

Вызывается, если переданный параметр state не сериализуем.

Примеры

Предположим, https://www.mozilla.org/foo.html выполняет следующий JavaScript:

const stateObj = { foo: "bar" };
history.pushState(stateObj, "", "bar.html");

На следующей странице вы можете использовать history.state для доступа к stateObj, который только что был добавлен.

Объяснение этих двух строк выше можно найти в статье Работа с API истории. Затем предположим, что https://www.mozilla.org/bar.html выполняет следующий JavaScript:

history.replaceState(stateObj, "", "bar2.html");

Это приведет к отображению в строке URL https://www.mozilla.org/bar2.html, но не приведет к загрузке браузером bar2.html или даже к проверке существования bar2.html.

Предположим теперь, что пользователь переходит на https://www.microsoft.com, затем нажимает кнопку "Назад". В этот момент в строке URL будет отображаться https://www.mozilla.org/bar2.html. Если пользователь снова нажмёт "Назад", в строке URL будет отображаться https://www.mozilla.org/foo.html, и полностью пропустит страницу bar.html.

Спецификации

Спецификация
HTML
# dom-history-replacestate-dev

Совместимость с браузерами

Рабочие Столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
replaceState 5 12
4До Firefox 5 переданный объект сериализовался с помощью JSON. Начиная с Firefox 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 5 18
4До Firefox для Android 5 переданный объект сериализовался с помощью JSON. Начиная с Firefox для Android 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 4 1.0 ≤37
unused_parameter Нет Нет Нет Нет
5Функция может быть удалена, см. баг 223190.
Нет Нет Нет
4Функция может быть удалена, см. баг 223190.
Нет Нет

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API