История API
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
API истории предоставляет доступ к истории сеанса браузера (не следует путать с историей WebExtensions) через глобальный объект history. Он предоставляет полезные методы и свойства, которые позволяют перемещаться вперед и назад по истории пользователя и изменять содержимое стека истории.
Основные понятия и использование
Перемещение назад и вперед по истории пользователя выполняется с помощью методов 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 |
См. также
© 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