HTML5 history spec является изворотливым.
history.pushState()
не отправляет сообщение popstate
или загружает новую страницу самостоятельно. Это предназначалось только для того, чтобы подтолкнуть государство к истории. Это функция отмены для одностраничных приложений. Вам необходимо вручную отправить событие popstate
или использовать history.go()
, чтобы перейти в новое состояние. Идея заключается в том, что маршрутизатор может прослушивать popstate
событий и делать навигацию для вас.
Некоторые вещи, чтобы отметить:
history.pushState()
и history.replaceState()
не отправлять popstate
события.
history.back()
, history.forward()
, а кнопки назад и вперед браузера отправляют popstate
событий.
history.go()
и history.go(0)
сделать полную перезагрузку страницы и не отправлять popstate
события.
history.go(-1)
(назад 1 страница) и history.go(1)
(вперед 1 страница) делать отправка popstate
события.
Вы можете использовать API истории, как это, чтобы нажать новое состояние и отправить всплывающее событие.
history.pushState({message:'New State!'}, 'New Title', '/link'); window.dispatchEvent(new PopStateEvent('popstate', { bubbles: false, cancelable: false, state: history.state }));
Тогда слушайте popstate
событий с маршрутизатором.
Бесстыдная самозарядка. Отличная почта и плагин. :) – Purag