Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Содержание
Обработчик события popstate
для объекта window.
Событие popstate
отсылается объекту window каждый раз, когда активная запись истории меняется между двумя записями истории для одного и того же документа. Если запись истории, ставшая активной, была создана вызовом history.pushState() или изменена с помощью history.replaceState()
, свойство state
события popstate
содержит копию объекта state этой записи истории.
Обратите внимание, что просто вызов history.pushState()
или history.replaceState()
не вызовет событие popstate
. Событие popstate
срабатывает только тогда, когда происходят какие то действия в браузере, такие как нажатие кнопки "назад" (или вызов history.back()
из JavaScript). Это событие срабатывает только когда пользователь переходит между двумя записями истории того же документа.
Браузеры по разному обрабатывают событие на странице загрузки. Chrome (prior to v34) и Safari всегда генерируют событие popstate
на странице загрузки, тогда как Firefox не делает этого.
Синтаксис
window.onpopstate = funcRef;
- funcRef - функция обработчик.
Событие popstate
В качестве примера, страница https://example.com/example.html,
исполняя нижеследующий код, сгенерирует всплывающие сообщения, как показано в комментариях:
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: https://example.com/example.html?page=1, state: {"page":1}" history.back(); // alerts "location: https://example.com/example.html, state: null history.go(2); // alerts "location: https://example.com/example.html?page=3, state: {"page":3}
Обратите внимание, что даже несмотря на то, что первоначальная запись истории (для https://example.com/example.html
) не имеет объекта state, ассоциированного с ней, событие popstate
все равно произойдет, когда мы активируем эту запись после второго вызова history.back()
.