Spec-Zone.ru › Web APIs

История API

Базовая Широко доступная

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

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

API истории предоставляет доступ к истории сеанса браузера (не следует путать с историей WebExtensions) через глобальный объект history. Он предоставляет полезные методы и свойства, которые позволяют перемещаться вперед и назад по истории пользователя и изменять содержимое стека истории.

Примечание: Этот API доступен только в главном потоке (Window). К нему нельзя получить доступ в Worker или Worklet контекстах.

Основные понятия и использование

Перемещение назад и вперед по истории пользователя выполняется с помощью методов back(), forward() и go().

Перемещение вперед и назад

Чтобы переместиться назад в истории:

history.back();

Это действует точно так же, как если бы пользователь нажал на кнопку Назад в строке инструментов браузера.

Аналогично, вы можете переместиться вперед (как если бы пользователь нажал кнопку Вперед):

history.forward();

Перемещение к определённой позиции в истории

Вы можете использовать метод go() для загрузки конкретной страницы из истории сеанса, определенной ее относительным положением к текущей странице. (Относительное положение текущей страницы 0.)

Чтобы перейти на предыдущую страницу (что эквивалентно вызову back()):

history.go(-1);

Чтобы перейти вперёд на одну страницу, как при вызове forward():

history.go(1);

Аналогично, вы можете перейти вперёд на 2 страницы, передав 2, и так далее.

Ещё одно применение метода go() — обновление текущей страницы, передав 0, или вызвав его без аргумента:

// The following statements
// both have the effect of
// refreshing the page
history.go(0);
history.go();

Вы можете определить количество страниц в стеке истории, посмотрев значение свойства length:

const numberOfEntries = history.length;

Интерфейсы

History

Позволяет управлять историей сеанса браузера (то есть страницами, посещёнными в вкладке или фрейме, в котором загружена текущая страница).

PopStateEvent

Интерфейс события popstate.

Примеры

В следующем примере подписывается обработчик события popstate. Затем показаны некоторые методы объекта history для добавления, замены и перемещения по истории браузера в текущей вкладке.

window.addEventListener("popstate", (event) => {
  alert(
    `location: ${document.location}, state: ${JSON.stringify(event.state)}`,
  );
});

history.pushState({ page: 1 }, "title 1", "?page=1");
history.pushState({ page: 2 }, "title 2", "?page=2");
history.replaceState({ page: 3 }, "title 3", "?page=3");
history.back(); // alerts "location: http://example.com/example.html?page=1, state: {"page":1}"
history.back(); // alerts "location: http://example.com/example.html, state: null"
history.go(2); // alerts "location: http://example.com/example.html?page=3, state: {"page":3}"

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

Спецификация
HTML
# the-history-interface

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

Десктоп Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari iOS Samsung Internet WebView Android
History_API 1 12 1 3 1 18 4 10.1 1 1.0 4.4
back 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4
forward 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4
go 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4
length 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4
pushState 5 12
4До Firefox 5, переданный объект сериализовался с помощью JSON. Начиная с Firefox 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 5 18
4До Firefox for Android 5, переданный объект сериализовался с помощью JSON. Начиная с Firefox for Android 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 4 1.0 ≤37
replaceState 5 12
4До Firefox 5, переданный объект сериализовался с помощью JSON. Начиная с Firefox 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 5 18
4До Firefox for Android 5, переданный объект сериализовался с помощью JSON. Начиная с Firefox for Android 6, объект сериализуется с помощью алгоритма структурированного клонирования. Это позволяет безопасно передавать более широкий спектр объектов.
11.5 4 1.0 ≤37
scrollRestoration 46 79 46 33 11 46 46 33 11 5.0 46
state 19 12 4 ≤12.1 6 25 4 ≤12.1 6 1.5 4.4

См. также

  • history глобальный объект
  • popstate событие

© 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_API

Spec-Zone.ru

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