--- title: History API slug: Web/API/History_API tags: - API - DOM - HTML5 - История translation_of: Web/API/History_API ---
{{DefaultAPISidebar("History API")}}
DOM-объект {{DOMxRef("Window")}} предоставляет доступ к истории текущей сессии браузера (не путать с историей браузерных расширений) через объект {{DOMxRef("Window.history","history")}}. Он предоставляет полезные методы и свойства, которые позволяют переходить назад и вперёд по истории пользователя и манипулировать её содержимым.
Перемещение назад и вперёд по истории пользователя выполняется с помощью методов {{DOMxRef("History.back","back()")}}, {{DOMxRef("History.forward","forward()")}}, и {{DOMxRef("History.go","go()")}}.
Чтобы переместиться назад по истории:
window.history.back();
Данный метод работает так, будто пользователь нажал на кнопку "Назад" на панели браузера.
Похожим образом можно переместиться вперед (как если бы пользователь нажал на кнопку "Вперед"):
window.history.forward();
Вы можете использовать метод {{DOMxRef("History.go","go()")}} для загрузки конкретной страницы из истории сессии, определяемой её позицией относительно текущей страницы. Относительная позиция текущей страницы равняется 0
.
Вернуться на одну страницу назад (равноценно вызову {{DOMxRef("History.back","back()")}}):
window.history.go(-1);
Перейти на одну страницу вперёд (равноценно вызову {{DOMxRef("History.forward","forward()")}})
window.history.go(1);
По такому же принципу, можно перемещаться вперед на 2 страницы, передавая аргумент 2
, и так далее.
Кроме того, метод go()
можно использовать для обновления текущей страницы, передавая аргумент 0
или вызывая его без аргументов:
// Обе следующих инструкции обновляют текущую страницу window.history.go(0) window.history.go()
Узнать количество страниц, которые находятся в стеке истории, можно, получив значение свойства length
:
var numberOfEntries = window.history.length;
В следующем примере свойству onpopstate
назначается обработчик. А затем приводятся некоторые методы объекта истории для добавления, замени и перемещения по истории текущей вкладки браузера
window.onpopstate = function(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}"
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('HTML WHATWG', "browsers.html#history", "History")}} | {{Spec2('HTML WHATWG')}} | Нет изменений по сравнению с {{SpecName("HTML5 W3C")}}. |
{{SpecName('HTML5 W3C', "browsers.html#history", "History")}} | {{Spec2('HTML5 W3C')}} | Изначальное определение |
{{Compat("api.History")}}